C

Typescript - Uma breve introdução - Type utilities - Parte 2

6 de dez. de 2020

Nos 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.

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 typebase.

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!

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!

Links importantes