TypeScript es una extensión de JavaScript que implementa la tipificación estática (estricta). Esto significa que la verificación de tipos ocurre en tiempo de compilación, no en tiempo de ejecución, como en JavaScript.
Principales diferencias:
Beneficios en grandes proyectos:
Ejemplo:
type User = { name: string; age: number; } function greet(user: User): string { return 'Hello, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // Ok
Pregunta: ¿Se puede declarar una variable de tipo any en un proyecto de TypeScript y no perderá el proyecto las ventajas de la tipificación estricta?
Respuesta:
Sí, TypeScript permite usar el tipo any, lo que equivale a la ausencia de tipificación para esa variable. Si se utiliza any con frecuencia, esto anula la principal ventaja de TypeScript: la tipificación estricta, y corres el riesgo de obtener errores típicos en tiempo de ejecución, como en JavaScript.
Ejemplo:
let data: any = 'test'; data = 42; // No habrá error, pero puede causar problemas
Historia
Un desarrollador usaba frecuentemente el tipo
anypara objetos complejos, para "avanzar más rápido". Como resultado, una vez llegó un objeto con campos faltantes y la aplicación falló de repente: el error llegó a producción debido a la falta de verificación de tipos.
Historia
En un proyecto grande, se intercambiaban mensajes entre dos microservicios diferentes. Uno de los servicios cambió la estructura del objeto, pero TypeScript no advirtió sobre esto, ya que el tipo se había definido explícitamente como
any. El error se descubrió un mes después, tras las quejas de un usuario.
Historia
Un joven desarrollador no describió el tipo de retorno de una función pública, confiando en la inferencia automática de tipos. Después de una refactorización, las expectativas de tipos dejaron de funcionar en el otro lado, y surgieron cadenas de errores en todo el proyecto.