26 puntos por xguru 2023-01-04 | 6 comentarios | Compartir por WhatsApp

#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

 
tested 2023-01-04

Parece que el punto 7 está escrito desde la perspectiva de React.
Yo prefiero interface sobre type. También es una sintaxis que existe en otros lenguajes.

 
alstjr7375 2023-01-04

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.

 
bichi 2023-01-04

Todo está bien, pero eso de usar type en lugar de interface en el punto 7, ¿realmente hacía falta? No se puede decir que sea un tip; hay casos donde interface tiene mejor expresividad, por ejemplo: interface Foo {(b: number): A; (): B}

 
a741593 2023-01-04

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 usando type?

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

 
harimkims 2023-01-05

En el libro Effective TypeScript hay una parte donde se organiza cuándo usar tipos e interfaces, así que la cito.

Saquemos una conclusión sobre cuál conviene usar entre tipos e interfaces. Si se trata de un tipo complejo, no hay nada que pensar: usa un alias de tipo. Pero si es un tipo de objeto simple que puede expresarse de ambas maneras, tanto con tipo como con interfaz, entonces hay que considerarlo desde la perspectiva de la consistencia y la ampliación. Si estás trabajando en una base de código que usa interfaces de forma consistente, usa interfaces; y si usa tipos de forma consistente, entonces usa tipos.

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.