Javascript • Desarrollado por Microsoft y diseñado por Anders Hejlsberg (Pascal, Delphi, C#) Microsoft?! “I fully expect to find their grandmother under the bus along with Silverlight! ”, someone@google+ Open Source Compiler + Tooling: Apache 2.0 License Especificación: OWF http://typescript.codeplex.com/
es código TS válido • Compile-time type checking, opcional • Construcciones de ECMAScript 6: o Módulos o Clases y OOP o Lambdas o No mucho más… • Tooling: completion, refactoring, navigation. ...casi ...casi
a constructor AnUglyGlobal.prototype.doIt = function(x) { return this.field + x; } // a method JS Libraries interface UglyGlobal { field: string; doIt(value: string); } declare var AnUglyGlobal : UglyGlobal; /// <reference path="external.d.ts"/> AnUglyGlobal.doIt("foo"); Una library en JS: external.js La declaración de la library para TS: external.d.ts El código TS que usa la library: uses_external.ts DefinitelyTyped define los tipos de más de 130 libraries Angular, underscore, Jquery, ember, Knockout, etc.. https://github.com/borisyank ov/DefinitelyTyped
JS. No hay type checking. • Closure o Anotaciones en la documentación. Algo más ‘verboso’. Optimizador. • Traceur o Diseñado para experimentar con construcciones futuras de ES. o No hay type checking. o Pocas consideraciones sobre el código generado • Dart o Require un runtime, más ambicioso y menos JS.
many JavaScript front ends. (…) it seems to generate the most attractive code. (…) it should take pressure off of the ECMAScript Standard for new features like type declarations and classes. (…) these can be provided nicely by a preprocessor, so there is no need to change the underlying language. I think that JavaScript's loose typing is one of its best features and that type checking is way overrated. TypeScript adds sweetness, but at a price. It is not a price I am willing to pay. Douglas Crockford:
• No queríamos tener que inventar nuestra propia forma de definir clases, herencia, o de definición de módulos. • Dispuestos a aceptar mejoras sobre JS poco intrusivas (opt-out), que se integren bien con nuestro entorno actual. • No queríamos que todo el equipo aprendiera un nuevo lenguaje, preferíamos algo familiar. • Type Checking :)