#1 Pensar en ello como un {Set}
#2 Comprender los tipos declarados y los tipos reducidos (narrowed)
#3 Usar uniones discriminadas en lugar de campos opcionales
#4 Usar predicados de tipo para evitar las aserciones de tipo
#5 Controlar la distribución de los tipos unión
#6 Verificar casos no manejados en tiempo de compilación mediante comprobaciones exhaustivas
#7 Usar type en lugar de interface
#8 En situaciones adecuadas, usar tuplas en lugar de arreglos
#9 Controlar que los tipos inferidos sean generales o específicos
#10 Usar infer para crear parámetros de tipo genérico adicionales
#11 Ser creativo con la manipulación de tipos para mantener DRY
Conclusión
6 comentarios
Parece que el punto 7 está escrito desde la perspectiva de React.
Yo prefiero
interfacesobretype. También es una sintaxis que existe en otros lenguajes.Yo también. Recuerdo que antes, incluso en el handbook de TypeScript, había una recomendación de usar interfaces de ser posible como primera opción.
Es este contenido.
Todo está bien, pero eso de usar
typeen lugar deinterfaceen el punto 7, ¿realmente hacía falta? No se puede decir que sea un tip; hay casos dondeinterfacetiene mejor expresividad, por ejemplo:interface Foo {(b: number): A; (): B}No es que esté defendiendo
type, pero no entiendo bien cuál sería un ejemplo con mejor expresividad. ¿No se puede expresar también el mismo ejemplo usandotype?interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}
En el libro Effective TypeScript hay una parte donde se organiza cuándo usar tipos e interfaces, así que la cito.
Si es un proyecto donde todavía no se ha establecido un estilo, hay que pensar si en el futuro podría existir la posibilidad de ampliación. Si necesitas escribir declaraciones de tipos para alguna API, es mejor usar interfaces. Esto es útil porque, cuando la API cambia, los usuarios pueden fusionar nuevos campos a través de la interfaz. Pero que ocurra una fusión de declaraciones en tipos usados internamente dentro del proyecto es una mala señal de diseño. Por lo tanto, en ese caso, se deben usar tipos.