TypeScript 2.0 esta disponible!

Un poco de historia

TypeScript fue liberado por Microsoft por primera vez en Octubre de 2012 (con la versión 0.8), después de dos años de desarrollo en los laboratorios de Microsoft, cabe mencionar que Anders Hejlsberg arquitecto líder de C# y creador de Delphi y Turbo Pascal trabajó en el desarrollo. Cuando recién salió la opinión general era que era un buen lenguaje pero básicamente solo tenia soporte para Visual Studio.

TypeScript se originó de las “percibidas” deficiencias de JavaScript para el desarrollo de aplicaciones grandes tanto en Microsoft como entre los clientes externos.

Los retos de lidiar con código JavaScript complejo conduce a una demanda de herramientas especificas para facilitar el desarrollo de componentes en el lenguaje.

Esta semana se liberó la versión 2.0 del lenguaje. Esta nueva versión del lenguaje tiene nuevas características en la cual se procura mucho la productividad del desarrollador y hace evidente un avanzado alineamiento hacia la evolución de ECMAScript, además provee gran soporte a librerías y herramientas JavaScript y aumenta el servicio del lenguaje el cual brinda una experiencia de primera clase en la edición a través de las herramientas.

Este lo pueden descargar para Visual Studio 2015 (el cual necesita el Update 3), lo pueden instalar con NuGet o empezar a usar en Visual Studio Code, o instalarlo con npm.

rpm install -g typescript@2.0

Para los usuarios “preview” de Visual Studio “15”, TypeScript 2.0 será incluido en la siguiente liberación Preview.

El viaje a 2.0

Hace unos años comenzó el viaje de la versión 1.0 a la 2.0, TypeScript 1.0 había mostrado exitosamente a los desarrolladores el potencial de JavaScript cuando es combinado con tipos estáticos. La revisión en tiempo de compilación mostró ahorrar muchísimas horas de -cazar bugs- y las herramientas en los editores de TypeScript le dan a los desarrolladores unos bonos de productividad sobre todo cuando comienzan a construir grandes y mas complejas JavaScript apps. Sin embargo, para ser un super conjunto (*en inglés superset) del más popular y difundido lenguaje del mundo, TypeScript aún tiene mucho crecimiento pendiente.

TypeScript 1.1 trajo una nuevo, completamente re escrito compilador que entregó un aumento en la ejecución 4 veces mayor, Este nuevo núcleo del compilador permitió mayor flexibilidad, una iteración más rápida, y proveyó de una linea base de ejecución para liberaciones futuras. Por ese mismo tiempo, el repositorio de TypeScript se migró a Github, para animar a la comunidad a involucrarse y proveer una mejor colaboración en la plataforma.

TypeScript 1.4 y 1.5 introdujeron una gran cantidad de soporte a ES2015/ES6 para alinearlo al futuro del lenguaje JavaScript. Adicionalmente, TypeScript 1.5 introdujo el soporte a modelos y decoradores, permitiendo que Angular 2 adoptara TypeScript y así se hicieran socios (Microsoft y Google ) en la evolución de TypeScript atendiendo a estas necesidades.

TypeScript 1.6–1.8 entregaron mejoras substanciales al sistema de tipado, con cada nueva versión acercándose a los patrones de javaScript y proveyendo soporte a las principales librerías JavaScript. Estas versiones liberadas orbitaron alrededor de soporte de ES* y el pulieron el compilador con revisiones de errores mucho mas avanzadas, fuera de la caja.

Pero podemos estar más emocionados con la versión 2.0 de TypeScript se alinea definitivamente a la especificación ECSMAScript, soporta las librerías Javascript y herramientas principales, y el servicio del lenguaje que nos da una una buena experiencia de edición con clases, y soporte en los principales editores, todo junto nos brinda una mucho más productiva y escalaba experiencia de desarrollo JavaScript.

La comunidad TypeScript.

Desde la versión 1.0 TypeScript ha crecido no solo como lenguaje si no también como comunidad. Solo el mes pasado TypeScript tuvo cerca de 2 millones de descarga npm comparadas a las 275 mil que tuvo en el mismo mes del año pasado. gran crecimiento. Adicionalmente se ha tenido una tremenda adopción de las construcciones nocturnas , — los “nightly builds” de TypeScript con alrededor de 2000 usuarios participando en la discusión en Github y 1500 usuarios introduciendo y comentando issues o problemas. Microsoft acepta PRs de mas de 150 usuarios, desde soluciones a bugs, prototipos y características mayores.

DefinitelyTyped es un ejemplo de la comunidad crece y va más allá. Empezando como un pequeño repositorio y declaración de archivos (archivos que describen la forma de tus librerías JS a TypeScript) , este ahora contiene cerca de 2,000 librerías que han sido escritas a mano por cerca de 2500 contribuidores individuales Esta es actualmente la descripción formal mas grande de libretas JavaScript que conocemos. Construyendo y creciendo DefinitelyTyped, la comunidad TypeScript no solo tiene soporte al uso de TypeScript con las librerías existentes sino una mejor definición y entendimiento de todo el código JavaScript.

¿Qué es lo nuevo en TypeScript 2.0 ?

TypeScript 2.0 trae diferentes nuevas características desde la versión 1.8, las cuales esta listadas en detalles en los posts de la versión Beta 2.0 y de la versión Release Candidate .

Las características mas grandes las listamos a continuación pero puedes leer más acerca de tagged unions, el nuevo never type, this types para funciones , soporte glob en tsconfig y todas las nuevas características en el wiki de Microsoft.

Adquisición de archivos de declaración simple — Simple Declaration File (.d.ts) Acquisition

El tipeado y tsd han sido herramientas fantásticas para el ecosistema TypeScript. Hasta ahora, eso maneadores de paquetes ayudan a los usuarios a obtener archivos .d.ts de DefinitelyTyped a sus proyectos tan rápido como es posible. A pesar de estas herramientas, uno de los puntos más dolorosos para nuevos usuarios ha sido aprender como adquirir y manejar la declaración de dependencias de archivo desde estos manejadores de paquetes.

Obtener y usar los archivos de declaración en 2.0 es mucha más fácil. Para obtener declaraciones para una librería como *lodash, todo lo que necesitas en npm:

npm install -s @types/lodash

El comando de arriba instala el paquete alcanzado @types/lodash el cual TypeScript 2.0 automáticamente reverenciará cuando importe todas en cualquier lado en tu programa. Esto significa que no necesitas ninguna herramienta adicional y tus archivos .d.ts pueden viajar con el resto de tus dependencias en el package.json.

Vale la pena notar que ambos — typings and tsd continuarán trabajando para proyectos existentes, sin embargo, los archivos de declaración 2.0 compatibles pueden no estar disponibles a través de estas herramientas. Por lo cual, se recomienda actualizarse al nuevo flujo de trabajo npm para TypeScript 2.0 y de ahí para adelante.

Tipos no anulables ( Non nullable Types )

JavaScript tiene dos valores para lo vacío, null y undefined. Siendo null el error del billon de dolares (the billion dollar mistake) , un error muy común, undefined solo aumenta nuestra perdidas. Estos dos valores son una gran fuente de errores en el mundo JavaScript porque los usuarios a menudo olvidan contabilizar para null o undefined cuando son regresados desde las APIs.

TypeScript originalmente inició con la idea de que los tipos eran siempre anulables. Eso significa que algo con un tipo número puede también tener un valor de null o de undefined. Desafortunadamente, este no provee ninguna protección para los temas o errrores de null / undefined.

En TypeScript 2.0, null y undefined tienen sus propios tipos los cuales permiten a los desarrolladores explicitamente expresar cuando los valores null/ undefined son aceptables. Ahora, cuando algo puede ser o número o null, podemos describirlo con la union del tipo number | null ( la cual se lee ( numero o nulo ).

https://msdnshared.blob.core.windows.net/media/2016/09/nonnullable-types-fade.mp4

Debido a que esto es un cambio importante, se ha añadido un modo — strictNullChecks por el cual se puede optar en este comportamiento. Sin embargo, yendo mas allá esta será una mejor practica cambiar prender bandera así nos ayudará a cachar el amplio rango de null / undefined erros.

Para leer más acerca de los tipos no anulables (non-nullable types), puedes revisar el PR on GitHub.

El Modificador de solo lectura (readonly Modifier)

La programación inmutable en TypeScript se hace más fácil. Empezando en TypeScript 2.0, tu puedes declarar propiedades de solo lectura.

class Person {
readonly name: string;
    constructor(name: string) {
if (name.length < 1) {
throw new Error("Empty name!");
}
        this.name = name;
}
}
// Error! 'name' is read-only.
new Person("Daniel").name = "Dan";

Cualquier get-accessor sin un set-accessor es también ahora considerado como de solo lectura.

¿Qué sigue?

TypeScript es JavaScript que escala. empezando desde la misma sintaxis y semantica que millones de desarrolladores de JavaScript manejan hoy, TypeScript permite a los desarrolladores usar código JavaScript existente. Incorporar las librerías JavaScript populares, y llamar código TypeScript desde JavaScript.

Los tipos estáticos opcionales de TypeScript habilitan a los desarrolladores JavaScript a usar herramientas altamente productivas y practicas como el chequeo estático y refactorización de código cuando desarrollamos nuestra aplicaciones JavaScript.

Si no has utilizado aún TypeScript, ahora es cuando!

*Lodash es un caja de herramientas ó conjunto de funciones JavaScript que proveen un método limpio y que optimiza el performance para manipular objetos y colecciones. Es una bifurcación de la librería Underscore y provee funcionalidad adicional así como mejoras muy serias en el performance. Si no usas Lodash, deberías.
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.