Capítulo 4. Genéricos
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
Até agora, nosso principal objetivo era pegar a flexibilidade inerente do JavaScript e encontrar uma maneira de formalizá-la através do sistema de tipos. Adicionamos tipos estáticos para uma linguagem tipada dinamicamente, para comunicar intenções, obter ferramentas e detetar bugs antes que elesaconteçam.
No entanto, algumas partes do JavaScript não se preocupam com os tipos estáticos. Por exemplo, uma função isKeyAvailableInObject só deve verificar se uma chave está disponível em um objeto; ela não precisa saber sobre os tipos concretos. Para formalizar adequadamente uma função como essa, podemos usar o sistema de tipos estruturais do Typescript e descrever um tipo muito amplo pelo preço da informação ou um tipo muito restrito pelo preço daflexibilidade.
Mas não queremos pagar qualquer preço. Queremos flexibilidade e informação. Os genéricos no Typescript são a bala de prata de que precisamos. Podemos descrever relações complexas e formalizar a estrutura para dados que ainda não foram definidos.
Os genéricos, juntamente com o seu grupo de tipos mapeados, mapas de tipos, modificadores de tipos e tipos auxiliares, abrem a porta à meta-tipagem, onde podemos criar novos tipos com base nos antigos e manter intactas as relações entre os tipos, enquanto os tipos recém-gerados desafiam o nosso código original para detetar possíveis erros.
Esta ...