¿Cuál es la motivación detrás de TypeScript?

21

Teníamos JavaScript, luego teníamos Flash, luego teníamos Silverlight y luego HTML5 los tenía a todos.

Entonces, ¿cuál es la motivación detrás de TypeScript? ¿Qué problemas se abordarán y qué mejoras obtendremos con TypeScript?

http://www.typescriptlang.org/

Gero
fuente
15
¿Por qué crees que HTML5 "ownd" JavaScript?
Bergi
1
En el sentido de que todos tenían que aceptar algunas cosas para encontrar un terreno común => tecnología y desarrollo estancado.
Gero
3
¿Por qué mencionaste a Dart?
Robert Harvey
Dart, TypeScript o Coffeescript se pueden compilar en JavaScript. Y Dart también es bastante nuevo.
Gero
Eche un vistazo a este artículo "Pensamientos en TypeScript" de Nicholas C. Zakas: nczonline.net/blog/2012/10/04/thoughts-on-typescript
Czarek Tomczak

Respuestas:

35

Me parece que es un lenguaje de clase estáticamente tipado que se compila en JavaScript. Es una buena idea, y una que otros también han tenido.

Las ventajas deberían ser obvias para cualquiera que se haya desarrollado tanto en lenguajes basados ​​en clases de tipo estático como en JavaScript:

  • En primer lugar, un compilador. Ser capaz de verificar si hay problemas de corrección obvios causados ​​por errores tipográficos o descuidos antes de la implementación es algo que la mayoría de los desarrolladores dan por sentado hasta que tienen que hacer desarrollo web, y luego de repente se saca de sus pies. Los navegadores están diseñados para hacer que la experiencia de navegación sea agradable a expensas de las instalaciones de prueba y depuración adecuadas, y la solución estándar, JSLint, no sustituye a un compilador real, ya que omite algunos problemas de corrección obvios y mezcla un montón de quejas de correctores de estilo en con sus informes Tener un compilador real es un gran paso adelante.
  • Y a lo largo de líneas similares, un sistema de tipos . Los sistemas de tipografía mejoran su código al hacer que sea más fácil de leer (sabe exactamente qué se pasa a una función y qué puede hacer, simplemente mirando la lista de parámetros, por ejemplo) y aplicando un cierto grado de corrección en la compilación hora. (Si espera un tipo de objeto específico, pasar un número entero es un error. JavaScript le permitirá hacerlo y luego explota cuando intente ejecutarlo; un compilador con un sistema de tipos lo detectará e informará un error para tú.)

Como vemos, la idea básica es muy buena. Dicho esto, no puedo decir nada sobre el lenguaje en sí porque no tengo experiencia con él. Pero he usado Smart (vinculado a lo anterior) y descubrí que es una herramienta increíblemente poderosa y útil para el desarrollo web.

Mason Wheeler
fuente
77
Es más como un superconjunto de JavaScript que un nuevo lenguaje que lo compila.
Daniel Little
2
Sí, escribir fuertemente facilita a los programadores.
Edwin Yip
13
TypeScript está estáticamente escrito, no fuertemente tipado.
Fenton
15

Hay algunas buenas razones para usar TypeScript, por lo que puedo ver. En primer lugar, como dijo Mason Wheeler, un compilador . O, más bien, todas las comprobaciones que realiza un compilador. JSLint y otras herramientas son útiles, pero pasa por alto algunos problemas y, a veces, son simplemente erróneos. Ciertamente acojo con beneplácito esta "innovación".

Luego hay un sistema de tipo real , que mejora la legibilidad y aplica los tipos correctos. Después de todo, esto aumenta la velocidad de desarrollo.

Para mí, una de las mejores cosas es el soporte de herramientas . Probablemente sea un efecto secundario del sistema de tipos, pero no obstante es excelente. Y realmente necesario, ya que el soporte de herramientas JavaScript actual es más que útil.

TypeScript intenta extender JavaScript . El compilador genera JavaScript realmente agradable. Y además de esto, sigue las propuestas de ECMAScript 6 . (Por ejemplo , sintaxis de función de flecha , valores predeterminados de parámetros , módulos , etc.

Hace que trabajar con módulos y clases sea ​​más fácil. En realidad, es posible y bastante común trabajar con clases y módulos en JavaScript, pero requiere una cierta cantidad de código repetitivo. Y no es realmente fácil de leer. TypeScript permite escribir declaraciones de clase, interfaz y módulo al igual que en Java o C #, lo cual es mucho más fácil si me preguntas.

Pero después de todo, sigue siendo solo JavaScript . No es necesario aprender un nuevo idioma o sintaxis. Lo único que agrega es el sistema de tipos opcional (que es excelente y está atrasado).

Luego está la "biblioteca de definiciones" , lo que significa que puedo usar todas mis librerías de JavaScript sin tener que volver a escribirlas o incluso parchearlas. Sin embargo, tengo el sistema de tipos adicional ahora.

¡Definitivamente lo intentaré!

Una última cosa, no hay competencia entre HTML5 y TypeScript. Pero esa es otra historia.

Bruno Schäpper
fuente
5

Teníamos JavaScript, luego teníamos Flash, luego teníamos Silverlight y luego HTML5 los tenía a todos.

Esto simplemente NO es cierto . Html5 no los posee, presenta nuevas marcas que simplifican el uso de multimedia y explora las ventajas de los navegadores de la nueva era (como usar la aceleración de hardware mientras se procesa html).

Entonces, ¿cuál es la motivación detrás de TypeScript?

Las motivaciones pueden estar motivadas por razones para usarlo. Todas las características de TypeScript, como la comprobación estática, la navegación basada en símbolos, la finalización de sentencias y la refactorización de códigos son razones muy importantes para considerarlo.

Además, ofrece clases, módulos e interfaces para ayudarlo a construir componentes robustos. Estas características están disponibles en el momento del desarrollo para el desarrollo de aplicaciones de alta confianza, pero se compilan en JavaScript simple.

EL Yusubov
fuente
HTML 5 no es un requisito previo para la aceleración de hardware. La mayoría de los navegadores están haciendo esto con o sin marcado HTML5
Neil N
mi declaración indica que la aceleración de hardware es una característica que proporciona el navegador, no html5.
EL Yusubov
3

Puede tratarse como una herramienta para administrar el desarrollo de JavaScript en lugar de un lenguaje totalmente nuevo que se compila a JS. No quiere ser un lenguaje de desarrollo del lado del servidor como Dart, y no tener una sintaxis diferente como CoffeeScript. No quería tomar un lenguaje popular (y su biblioteca principal) y compilarlo en JS como GWT o script #. TypeScript incluso sigue la misma sintaxis de "clase" propuesta para la próxima versión de JS.

Creo que la mayor parte del desarrollo web que se realiza hoy usa JavaScript real, solo en el lado del cliente. Lenguajes o marcos como Dart, GWT no es adecuado para esto. Si opta por coffeescript, aparece una nueva sintaxis. Y tienes que entender tanto coffeescript como JS. Si bien TypeScript solo está agregando algunas características adicionales orientadas a los tipos, combinadas en JS, que ahorran a los desarrolladores de errores específicos de tipo (que es una gran parte de los errores de JS) y brinda a las herramientas de desarrollo más información sobre la intención de los desarrolladores.

Este enfoque no es nuevo. Vaya a la sección "Escritura estática" de

Este artículo aborda su consulta: http://www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/

Gulshan
fuente
0

Creo que es un esfuerzo convertir un pedazo de basura compartido y poco confiable (javascript) en un lenguaje propietario que realmente pueda usarse para proyectos sustanciales.

Debería compararse con GWT, que tiene un conjunto similar de objetivos, pero adoptó un enfoque más limpio al hacer que JavaScript no sea parte del lenguaje; y con applets de Java o Flash, que adoptan el enfoque muy claro de definir un entorno de tiempo de ejecución completo independiente del navegador.

Su opinión puede variar, pero creo que está condenada siempre que dependa de que los navegadores proporcionen de forma nativa las implementaciones de JavaScript (variadas, inconsistentes) y los modelos DOM.

ddyer
fuente
55
En primer lugar, no es propietario, ya es un estándar abierto. En segundo lugar, se parece más a Dart que a GWT / ScriptSharp (aunque similar).
Daniel Little
1
Probablemente no haya forma de ganar con esto: si Microsoft no lo controla, se convertirá en otro lenguaje bastardo con muchas variantes, y aún depende de las arenas movedizas de javascript y DOM
ddyer
1
Suena como alguien que podría estar un poco amargado por sus habilidades de Flash y / o Java que se vuelven considerablemente menos relevantes por la popular pila HTML5 / JS actual.
Graham
3
-1 Entonces no te gusta JavaScript. Esa es tu declaración, básicamente.
Bruno Schäpper
2
Justo, y dado que es la base del mecanografiado, creo que el mecanografiado se basa en una mala base. No es necesariamente fatal, pero es un mundo de dolor.
ddyer