Buscar..


Introducción

Si encuentra que los argumentos para los sistemas de tipos son persuasivos en general, entonces estará satisfecho con TypeScript.

Aporta muchas de las ventajas del sistema de tipos (seguridad, legibilidad, herramientas mejoradas) al ecosistema de JavaScript. También sufre de algunos de los inconvenientes de los sistemas tipográficos (complejidad agregada e incompleta).

Observaciones

Los méritos de los lenguajes mecanografiados frente a los no tipificados han sido debatidos durante décadas. Los argumentos para los tipos estáticos incluyen:

  1. Seguridad: los sistemas de tipo permiten detectar muchos errores antes de tiempo, sin ejecutar el código. TypeScript puede configurarse para permitir menos errores de programación
  2. Legibilidad: los tipos explícitos hacen que el código sea más fácil de entender para los humanos. Como escribió Fred Brooks, "Muéstrame tus diagramas de flujo y oculta tus tablas, y seguiré desconcertado. Muéstrame tus tablas, y generalmente no necesitaré tus diagramas de flujo; serán obvios".
  3. Herramientas: los sistemas tipográficos hacen que el código sea más fácil de entender para las computadoras. Esto permite que herramientas como IDE y linters sean más poderosas.
  4. Rendimiento: los sistemas de tipo hacen que el código se ejecute más rápido al reducir la necesidad de verificar el tipo de tiempo de ejecución.

Debido a que la salida de TypeScript es independiente de sus tipos , TypeScript no tiene impacto en el rendimiento. El argumento para usar TypeScript se basa en las otras tres ventajas.

Los argumentos contra los sistemas tipográficos incluyen:

  1. Complejidad agregada: los sistemas de tipos pueden ser más complejos que el tiempo de ejecución de lenguaje que describen. Las funciones de orden superior pueden ser fáciles de implementar correctamente pero difíciles de escribir . Tratar con las definiciones de tipo crea barreras adicionales para el uso de bibliotecas externas.
  2. Verbo añadido: las anotaciones de tipo pueden agregar repetitivo a su código, haciendo que la lógica subyacente sea más difícil de seguir.
  3. Una iteración más lenta: al introducir un paso de compilación, TypeScript ralentiza el ciclo de edición / guardar / recargar.
  4. Incompleto: un sistema de tipo no puede ser completo y completo. Hay programas correctos que TypeScript no permite. Y los programas que acepta TypeScript pueden contener errores. Un sistema de tipo no alivia la necesidad de pruebas. Si usa TypeScript, es posible que tenga que esperar más para usar las nuevas funciones de lenguaje ECMAScript.

TypeScript ofrece algunas formas de abordar todos estos problemas:

  1. Mayor complejidad. Si escribir parte de un programa es demasiado difícil, TypeScript se puede deshabilitar en gran medida utilizando any tipo opaco. Lo mismo ocurre con los módulos externos.
  2. Verbo añadido. Esto se puede abordar parcialmente a través de alias de tipo y la capacidad de TypeScript para inferir tipos. Escribir un código claro es tanto un arte como una ciencia: elimine demasiadas anotaciones de tipo y es posible que el código ya no sea claro para los lectores humanos.
  3. Una iteración más lenta: un paso de compilación es relativamente común en el desarrollo moderno de JS y TypeScript ya se integra con la mayoría de las herramientas de compilación . ¡Y si TypeScript detecta un error antes, puede ahorrarle un ciclo completo de iteración!
  4. Incompletitud. Si bien este problema no se puede resolver completamente, TypeScript ha podido capturar patrones de JavaScript cada vez más expresivos a lo largo del tiempo. Los ejemplos recientes incluyen la adición de tipos mapeados en TypeScript 2.1 y mixins en 2.2 .

Los argumentos a favor y en contra de los sistemas tipográficos en general se aplican igualmente a TypeScript. El uso de TypeScript aumenta la sobrecarga para iniciar un nuevo proyecto. Pero con el tiempo, a medida que el proyecto aumenta de tamaño y gana más contribuyentes, la esperanza es que las ventajas de usarlo (seguridad, legibilidad, herramientas) se vuelvan más fuertes y superen las desventajas. Esto se refleja en el lema de TypeScript: "JavaScript que escala".

La seguridad

TypeScript detecta los errores de tipo temprano a través del análisis estático:

function double(x: number): number {
  return 2 * x;
}
double('2');
//     ~~~ Argument of type '"2"' is not assignable to parameter of type 'number'.

Legibilidad

TypeScript permite a los editores proporcionar documentación contextual:

Autocompletar contextual para el método de segmento de cadena

¡Nunca olvidará si String.prototype.slice toma (start, stop) o (start, length) otra vez!

Estampación

TypeScript permite a los editores realizar refactores automáticos que conocen las reglas de los idiomas.

Un símbolo que está siendo renombrado, pero solo en su propio alcance

Aquí, por ejemplo, Visual Studio Code puede cambiar el nombre de las referencias al foo interno sin alterar el foo externo. Esto sería difícil de hacer con un simple buscar / reemplazar.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow