Changing Property Optionality and Mutability
Conceitos principais
?(question mark)
Torna as propriedades opcionais.type MakeOptional<T> = { [P in keyof T]?: T[P]; };-?(minus + question mark)
Remove a opcionalidade, tornando as propriedades obrigatórias.type MakeRequired<T> = { [P in keyof T]-?: T[P]; };readonly
Torna as propriedades somente leitura.type MakeReadOnly<T> = { readonly [P in keyof T]: T[P]; };-readonly
Remove a restrição de somente leitura, tornando as propriedades mutáveis.type MakeReadWrite<T> = { -readonly [P in keyof T]: T[P]; };
Exemplo de transformação em cadeia
Resultado:
As propriedades passam por uma sequência de transformações: opcionais → obrigatórias → readonly → read-write.
No final,
readWriteTypevolta a ter propriedades mutáveis.
Tipos mapeados nativos do TypeScript
Nome | Descrição |
|---|---|
Partial | Torna todas as propriedades opcionais. |
Required | Torna todas as propriedades obrigatórias. |
Readonly | Adiciona |
Pick<T, K> | Cria um novo tipo selecionando apenas propriedades específicas. |
Record<K, T> | Cria um tipo novo a partir de chaves e valores, sem transformar outro. |
Exemplo com tipos nativos
Esse código produz a mesma saída que os tipos personalizados, mas usando os mapeamentos embutidos do TypeScript.