Typescript 4.1
Hello!
Jonathan Sedrez
Frontend | ilegra
2
3
4.1
4
O que é
Typescript?
5
Javascript
linguagem de código aberto que
se baseia em JavaScript,
adicionando definições de tipo
estático.
Type-checking
Todo código JavaScript válido
também é código TypeScript.
Você pode obter erros de
verificação de tipo.
Gradual
Você pode ter uma aplicação
com Javascript e Typescript
simultaneamente
6
What's new?
7
Template Literal Types
Template literal types nos permitem modelar funções e APIs que esperam um conjunto de strings específicas.
type World = "world";
type Greeting = `hello ${World}`;
8
Agora é possível mapear objetos e especificar o type para cada key de um objeto.
TypeScript 4.1 permite que você mapeie novamente as chaves em tipos mapeados com uma nova cláusula as.
type Options = {
[K in "noImplicitAny" | "strictNullChecks" | "strictFunctionTypes"]?: boolean
};
// same as
// type Options = {
// noImplicitAny?: boolean,
// strictNullChecks?: boolean,
// strictFunctionTypes?: boolean
// };
Key Remapping in Mapped Types
9
Conditional types agora pode referenciar imediatamente ele mesmos e com seus types, deixando mais fácil a
criar aliases recursivos.
Por exemplo, se você quiser escrever um type pegando os elementos de um array, você pode fazer o
seguinte:
type ElementType<T> = T extends ReadonlyArray<infer U> ? ElementType<U> : T;
Function deepFlatten<T extends readonly unknown[]>(x: T): ElementType<T>[] {
Throw “not implemented”;
}
//Todos esses retornarão o type number[]:
deepDlatten([1, 2, 3]);
deepDlatten([[1], [2, 3]]);
Recursive Conditional Types
10
Nesse novo modo, todo acesso a um objeto (como foo.bar) ou acesso indexado (como foo ["bar"]) é
considerado potencialmente undefined.
Se precisar acessar essa propriedade, você terá que verificar primeiro a existência dela ou usar um operador
de asserção não nulo
// Verifica se a propriedade existe primeiro
if (opts.yadda) {
console.log(opts.yadda.toString());
}
// Basicamente esta dizendo: “Confia em mim, eu sei o que estou fazendo”
// quando se utiliza o operador “!”.
opts.yadda!.toString();
Checked Indexed Accesses
Breaking Changes
11
- Mudanças no lib.d.ts
- abstract nao pode mais ser marcado como async
- any/unknown São propagados em posições falsas
- resolve Parameters não são mais opcionais em Promises
Obrigado!
Duvidas?
12

Typescript 4.1

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
    5 Javascript linguagem de códigoaberto que se baseia em JavaScript, adicionando definições de tipo estático. Type-checking Todo código JavaScript válido também é código TypeScript. Você pode obter erros de verificação de tipo. Gradual Você pode ter uma aplicação com Javascript e Typescript simultaneamente
  • 6.
  • 7.
    7 Template Literal Types Templateliteral types nos permitem modelar funções e APIs que esperam um conjunto de strings específicas. type World = "world"; type Greeting = `hello ${World}`;
  • 8.
    8 Agora é possívelmapear objetos e especificar o type para cada key de um objeto. TypeScript 4.1 permite que você mapeie novamente as chaves em tipos mapeados com uma nova cláusula as. type Options = { [K in "noImplicitAny" | "strictNullChecks" | "strictFunctionTypes"]?: boolean }; // same as // type Options = { // noImplicitAny?: boolean, // strictNullChecks?: boolean, // strictFunctionTypes?: boolean // }; Key Remapping in Mapped Types
  • 9.
    9 Conditional types agorapode referenciar imediatamente ele mesmos e com seus types, deixando mais fácil a criar aliases recursivos. Por exemplo, se você quiser escrever um type pegando os elementos de um array, você pode fazer o seguinte: type ElementType<T> = T extends ReadonlyArray<infer U> ? ElementType<U> : T; Function deepFlatten<T extends readonly unknown[]>(x: T): ElementType<T>[] { Throw “not implemented”; } //Todos esses retornarão o type number[]: deepDlatten([1, 2, 3]); deepDlatten([[1], [2, 3]]); Recursive Conditional Types
  • 10.
    10 Nesse novo modo,todo acesso a um objeto (como foo.bar) ou acesso indexado (como foo ["bar"]) é considerado potencialmente undefined. Se precisar acessar essa propriedade, você terá que verificar primeiro a existência dela ou usar um operador de asserção não nulo // Verifica se a propriedade existe primeiro if (opts.yadda) { console.log(opts.yadda.toString()); } // Basicamente esta dizendo: “Confia em mim, eu sei o que estou fazendo” // quando se utiliza o operador “!”. opts.yadda!.toString(); Checked Indexed Accesses
  • 11.
    Breaking Changes 11 - Mudançasno lib.d.ts - abstract nao pode mais ser marcado como async - any/unknown São propagados em posições falsas - resolve Parameters não são mais opcionais em Promises
  • 12.