Middle
Fale sobre os tipos utility em TypeScript.
sobes.tech IA
Resposta da IA
Os tipos utilitários em TypeScript são tipos auxiliares integrados que simplificam operações comuns com tipos, como transformações, extrações ou exclusões de propriedades específicas. Eles aumentam a flexibilidade e a legibilidade do código.
Principais tipos úteis:
Partial<Type>: Cria um tipo em que todas as propriedades deTypesão opcionais.// Cria um tipo com as propriedades opcionais 'name' e 'age' type PartialUser = Partial<{ name: string; age: number }>;Readonly<Type>: Cria um tipo em que todas as propriedades deTypeestão marcadas como apenas leitura.// Cria um tipo com as propriedades 'name' e 'age', acessíveis apenas para leitura type ReadonlyUser = Readonly<{ name: string; age: number }>;Pick<Type, Keys>: Cria um tipo selecionando um conjunto de propriedadesKeysdeType.Keyspode ser um literal de string ou uma união de literais de string.// Cria um tipo que contém apenas a propriedade 'name' type UserWithName = Pick<{ name: string; age: number }, 'name'>;Omit<Type, Keys>: Cria um tipo excluindo um conjunto de propriedadesKeysdeType.// Cria um tipo que contém apenas a propriedade 'age' type UserWithoutName = Omit<{ name: string; age: number }, 'name'>;Exclude<UnionType, ExcludedMembers>: Cria um tipo excluindo deUnionTypetodos os membros atribuíveis aExcludedMembers.// Cria um tipo que exclui 'null' do união type NonNullableString = Exclude<string | null | undefined, null | undefined>;Extract<Type, Union>: Extrai deTypetodos os membros atribuíveis aUnion.// Extrai 'null' e 'undefined' do união type JustNullOrUndefined = Extract<string | null | undefined, null | undefined>;NonNull<Type>: ExcluinulleundefineddeType.// Cria um tipo que exclui 'null' e 'undefined' type NonNullStringOrNumber = NonNullable<string | number | null | undefined>;Parameters<Type>: Obtém os tipos de parâmetros da funçãoTypeem forma de tupla.// Obtém os tipos de parâmetros da função: [string, number] type FuncParams = Parameters<(a: string, b: number) => void>;ReturnType<Type>: Obtém o tipo de valor de retorno da funçãoType.// Obtém o tipo de valor de retorno da função: number type FuncReturn = ReturnType<() => number>;ConstructorParameters<Type>: Extrai os tipos de parâmetros do construtor do tipo construtor.// Obtém os tipos de parâmetros do construtor de classe: [string, number] type MyClassParams = ConstructorParameters<typeof MyClass>; class MyClass { constructor(name: string, age: number) {} }InstanceType<Type>: Extrai o tipo de instância do tipo construtor.// Extrai o tipo de instância de classe: MyClass type MyClassInstance = InstanceType<typeof MyClass>; class MyClass { constructor(name: string, age: number) {} }
O uso de tipos utilitários contribui para criar um código mais seguro, flexível e fácil de manter.