Typescript - Uma breve introdução - Type utilities - Parte 2
6 de dez. de 2020Nos artigos anteriores nós vimos um pouco sobre tipos básicos, enums, type assertions , interfaces, type aliases, classes e type utilities. Recomendo dar uma conferida neles, caso não se sinta confortável com esses conceitos.
- Typescript - Uma breve introdução
- Typescript - Uma breve introdução - Tuplas, Enums e Type Assertion
- Typescript - Uma breve introdução - Interfaces
- Typescript - Uma breve introdução - Type Aliases
- Typescript - Uma breve introdução - Classes
- Typescript - Uma breve introdução - Type utilities - Parte 1
Exclude
Se funcionamento é muito simples. Esse utilitário cria um novo tipo removendo tudo que é passado na lista de keys.
type Tiers = "Ferro" | "Bronze" | "Prata" | "Mestre" | "Desafiante";
type LowTiers = Exclude<Tiers, "Mestre" | "Desafiante">;
// LowTiers aceita os valores 'Ferro' | 'Bronze' | 'Prata'
O interessante é que além das keys, também podemos dizer quais tipos primitivos queremos excluir.
type GenericType = (() => number) | number | string | (() => void);
type NewGenericType = Exclude<GenericType, Function>;
// NewGenericType é um tipo que aceita number e string, sem as funções.
No exemplo acima eu criei um novo type
excluindo todas as funções que estavam presentes no nosso type
base.
Extract
O funcionamento não é tão diferente do Exclude
. Aqui criamos um type
usando apenas as keys que passarmos como argumentos. Vale lembrar que aqui podemos escolher tipos primitivos para extrair.
type GenericType = (() => number) | number | string | (() => void);
type NewGenericType = Extract<GenericType, Function>;
// NewGenericType é um tipo que aceita apenas funções.
Parameters
Constrói uma tupla com base nos parâmetros de uma função(tipagem da função) fornecida. Recomendo dar uma olhadinha nesse artigo, caso não esteja familiarizado com tuplas.
type GenericFunctionType = (a: string, b: number, c: boolean) => void;
type GenericType = Parameters<GenericFunctionType>;
// GenericType é uma tupla com a seguinte estrutura [string, number, boolean]
const tupla: GenericType = ["zero", 1, false];
ReturnType
Esse utilitário recebe a tipagem de uma função e cria um type
com base no retorno da mesma.
type GenericFunction = () => number;
type GenericType = ReturnType<GenericFunction>;
const tupla: GenericType = 1;
Isso é tudo pessoal!
Obrigado por chegar até aqui!! Espero que tenha conseguido te ajudar de alguma forma. 😊
Existem outros utilitários do typescript, porém, eles não são tão convencionais e acredito que as chances de você precisar usar um deles é muito remota. Mas basta acessar a documentação, caso queira conhecer a lista completa.
Em breve irei escrever mais conteúdo sobre Typescript.
Então… Até mais!