Ahora salió TypeScript, es una noticia emocionante para mí, pero ¿cómo puedo convertir todos los archivos JavaScript existentes a TypeScript?
typescript
javascript
Gisway
fuente
fuente
Respuestas:
Me temo que esto será muy problemático. TypeScript es un superconjunto de JavaScript . Esto implica que todo el código JavaScript válido también es un código TypeScript válido. Lo cual está mal. El siguiente código es correcto en JavaScript, pero crea un error en TypeScript:
Puede obtener el comportamiento dinámico de JavaScript declarando los datos como "ambiente"
Ahora esto también funcionará en TypeScript. Sin embargo, puede cambiar la extensión de un archivo .js a .ts y pasar este archivo al compilador TypeScript. Esto realmente me confundió y formulé la pregunta en el canal IRC TypeScript en freenode. Resultó que el compilador de Script mecanografía comprueba su entrada para JavaScript válido y simplemente no hace nada en caso de que encuentre algo. Intuitivamente esto suena bien. Debería poder "convertir" todo su JavaScript a mecanografiado simplemente actualizando las extensiones de archivo y listo. Lamentablemente, esto no funciona como se esperaba. Supongamos que tienes este código:
Editar: acabo de intentar compilar esto y no funciona. Lo siento, parece que me he equivocado: el compilador TypeScript ni siquiera acepta JavaScript puro. Trataré de averiguar qué salió mal.
Ha cambiado la extensión del archivo a .ts y utiliza la función func en su otro código. Al principio todo parece estar bien, pero luego aparece un error feo. Decide que alguna comprobación de tipo estático probablemente lo ayudará y cambia el código a:
Pero ahora esto ya no es un código JavaScript válido y hará que el compilador genere muchos mensajes de error. Después de todos los datos no tiene miembro "z". ... Este comportamiento podría evitarse si el tipo predeterminado siempre fuera "cualquiera", pero la inferencia de tipos sería completamente inútil.
Entonces, ¿cómo se resuelve este problema? La respuesta es: archivos de declaración. Puede usar su código JavaScript "tal cual" en el proyecto y aún así obtener una comprobación de tipo estático con la ayuda de unos pocos archivos .d.ts. Informan al compilador qué variables, métodos y "clases" se declaran en un archivo JavaScript, incluidos sus tipos. Por lo tanto, permiten la verificación de tipos en tiempo de compilación y una inteligencia inteligente fantástica. Un archivo .d.ts para mi ejemplo sería
Guarde esto como "myjsfile.d.ts" e impórtelo a mecanografiado con
asegúrese de incluir el script JavaScript en su archivo html sobre el mecanografiado compilado. Aquí hay un enlace interesante . Puede interesarle la sección "Convertir JavaScript en TypeScript".
fuente
noEmitOnError
esté desactivado, todavía puede operar y emitir su transpilación. Por lo tanto, si bien muestra errores (lo cual es perturbador), en realidad puede ignorar esos errores y utilizar la transpilación TypeScript a pesar de ello (permitiendo, por ejemplo, la transición gradual de JS a TS). Además, al menos algunos de los errores se pueden deshabilitar a través de interruptores comonoImplicitAny
(quizás todos, aunque IDK).Actualización: la herramienta se describe en detalle en esta publicación
ReSharper a partir de la versión 9 ( compilaciones EAP disponibles ) tiene la funcionalidad de convertir automáticamente el código JavaScript en TypeScript. Puede comenzar cambiando el nombre del archivo .js a .ts y ver sugerencias de R # como esta:
No lo he probado en ejemplos del mundo real. Pero es capaz de convertir una gran cantidad de patrones de JavaScript.
fuente
Desde la terminal (mac):
Renombra todos los archivos .js a .ts
Esto es algo irónico, pero como Benjamin señala arriba, los archivos JavaScript son TypeScript válidos . Si desea agregar tipos, clases, interfaces, etc. a su JavaScript, necesitará diseñar y cambiar su código utilizando estos conceptos , hay poca o ninguna conversión automática para esto.
Con GNU findutils (la mayoría * nixes) + Bash, solo haz:
fuente
var a = 5; a = "";