¿Cuáles son las diferencias significativas entre TypeScript y JavaScript?
¿Cuáles son las diferencias entre TypeScript y JavaScript? ¿Cuáles son los objetivos de diseño del lenguaje de cada uno y cómo difieren estos objetivos de diseño?
¿Qué tan compatibles son las bibliotecas y frameworks destinados a usarse con Javascript, por ejemplo jquery, también con Typescript?
Algunos ejemplos serían útiles.
Respuesta #1
He usado TypeScript en algunos pequeños proyectos de pasatiempo y estoy convencido de que es el reemplazo perfecto de JavaScript. Mis características favoritas fueron:
Archivos de declaración. Con los archivos de declaración puedes agregar información de tipos a tus bibliotecas de JavaScript. Esta información estructural te proporcionará un soporte de intellisense fantástico en VisualStudio.
"Programación Orientada a Objetos 'Estándar'. Si vienes de un entorno C# o Java, probablemente ni siquiera necesitarás un tutorial de TypeScript. Simplemente funciona. Tienes clases, interfaces, modificadores de acceso, mecanismos de extensión, ...
Soporte integrado para módulos. Typescript tiene un sistema de módulos ligeramente confuso. Puedes dividir tu código en varios archivos .ts y simplemente concatenarlos, pero también puedes crear diferentes módulos.
Y finalmente: La sintaxis. A veces son las cosas pequeñas las que tienen el mayor impacto. Para mí, la sintaxis de TypeScript se siente simplemente perfecta. Permíteme darte algunos ejemplos:
Anotaciones de tipo con ":" e inferencia de tipo
var a = 5; //infers that a has the type number
var canvas : HTMLCanvasElement = document.getElementById("canvas");
// automatically casts to the canvas type. Intellisense will now suggest all the canvas specific methods
Arreglos que funcionan como listas, pilas, ...
var array= []; //dynamic type
array.push(1);
array[1]=2;
array.pop();
var array2 : number[] = []; //typed array
array[0]=2;
array[1]="hello" //compile time error. You've got to love the type system. Finally you can trust your collections
Y funciones con la sintaxis de flecha como lambdas:
var array=[];
array.push(1);
//...
array.forEach((num)->{alert(num);});
//for single statement functions you can write
array.forEach((num)->alert(num));
Ahora arrays tipados y lambdas combinados:
var array: number[]=[];
array.push(1);
//...
//let's assume you want to work with the data in the array. You've got to filter it and process it. Lambdas will come in handy, as well as the type inference
array.filter((num)->num>3).map((num)->num*2).forEach((num)->alert(num));
// the first lambda with the comparison is fully type safe. The compiler knows the type of the array. Therefore it can infer the type of the parameter num and will check if num can be compared to a number
Realmente disfruté usando TypeScript. Incrementará significativamente tu productividad. Y hay aún más por venir: http://typescript.codeplex.com/wikipage?title=Roadmap https://github.com/Microsoft/TypeScript/wiki/Roadmap
La versión 0.9 contará con genéricos y para las versiones 1.x planean implementar llamadas async/await.
Respuesta #2
Aquí hay una colección de videos sobre TypeScript:
http://channel9.msdn.com/search?term=typescript
Básicamente añade tipado estático opcional a Javascript, por lo que se obtienen todas las ventajas del tipado estático en Javascript.
