ExpertiDict

TypeScript · Avançado · Inglês · Técnico

homomorphic mapped type

/ˌhoʊmoʊˈmɔɹfɪk mæpt taɪp/substantivo

Mapped type no formato { [K in keyof T]: ... }, que preserva os modificadores readonly e ? das propriedades de T e se distribui sobre uniões, arrays e tuplas.

Onde usar

Explica por que um mapped type sobre keyof T mantém os opcionais do original e por que, aplicado a uma tupla, devolve uma tupla. Vem à tona ao depurar tipos que 'perdem' modificadores.

Em código

type Nul<T> = { [K in keyof T]: T[K] | null };
type A = Nul<{ a?: number; readonly b: 1 }>;
// mantém o ? de a e o readonly de b
type B = Nul<[string, number]>;
// B = [string | null, number | null]

Exemplos

It's a homomorphic mapped type, so optional fields stay optional.

É um homomorphic mapped type, então campos opcionais continuam opcionais.

Mapping over a tuple type returns a tuple.

Mapear sobre um tipo tupla devolve uma tupla.

Cuidado

Trocar keyof T por uma união qualquer, como 'a' | 'b', cria um mapped type não homomórfico, que não herda os modificadores.

Veja também

Todos os termos de TypeScript