26 pontos por xguru 2023-01-04 | 6 comentários | Compartilhar no WhatsApp

#1 Pensar em termos de {conjuntos (Set)}
#2 Entender os tipos declarados e os tipos restringidos (narrowed)
#3 Usar uniões discriminadas em vez de campos opcionais
#4 Usar predicados de tipo para evitar asserções de tipo
#5 Controlar a distribuição de tipos união
#6 Verificar casos não tratados em tempo de compilação com checagens exaustivas
#7 Usar type em vez de interface
#8 Em situações apropriadas, usar tuplas em vez de arrays
#9 Controlar para que os tipos inferidos sejam genéricos ou específicos
#10 Usar infer para criar parâmetros de tipo genéricos adicionais
#11 Ser criativo com manipulação de tipos para manter o código DRY
Conclusão

6 comentários

 
tested 2023-01-04

Parece que o item 7 foi escrito a partir da perspectiva do React.
Eu prefiro interface a type. Também é uma sintaxe presente em outras linguagens.

 
alstjr7375 2023-01-04

Eu também. Lembro que antigamente até no handbook do TypeScript havia a recomendação de usar interfaces de preferência sempre que possível.

 
bichi 2023-01-04

Concordo com quase tudo, mas usar type em vez de interface no item 7 é meio forçado, né? Não dá para chamar isso exatamente de dica. Há casos em que a expressividade de interface é melhor, por exemplo: interface Foo {(b: number): A; (): B}

 
a741593 2023-01-04

Não estou defendendo type, mas não entendo bem o exemplo de que ele tem melhor expressividade. Não seria possível expressar o mesmo exemplo igualmente com type?

interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}

 
harimkims 2023-01-05

No livro Effective TypeScript, há uma parte que organiza quando usar tipos e interfaces, então vou citá-la.

Vamos tirar uma conclusão sobre quando usar tipos e interfaces. Se for um tipo complexo, use um alias de tipo sem nem pensar duas vezes. Porém, se for um tipo de objeto simples que pode ser expresso das duas formas, com tipo ou interface, é preciso considerar consistência e ampliação. Se você estiver trabalhando em uma base de código que usa interfaces de forma consistente, use interfaces; se usa tipos de forma consistente, use tipos.

Se for um projeto cujo estilo ainda não está estabelecido, vale pensar se haverá possibilidade de ampliação no futuro. Se você precisar escrever declarações de tipo para alguma API, é melhor usar interface. Isso é útil porque, quando a API mudar, os usuários podem mesclar novos campos por meio da interface. Porém, se ocorrer mesclagem de declarações em tipos usados internamente no projeto, isso indica um design ruim. Portanto, nesse caso, deve-se usar tipo.