# TypeScript

TypeScript es un lenguaje de programación libre y de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto de JavaScript, que esencialmente añade tipos estáticos y objetos basados en clases. Anders Hejlsberg, diseñador de C# y creador de Delphi y Turbo Pascal, ha trabajado en el desarrollo de TypeScript. TypeScript es usado para desarrollar aplicaciones JavaScript que se ejecutarán en el lado del cliente o de servidor, o extensiones para programas (Node.js y Deno).
TypeScript extiende la sintaxis de JavaScript, por tanto cualquier código JavaScript existente debería funcionar sin problemas. Está pensado para grandes proyectos, los cuales a través de un compilador de TypeScript se traducen a código JavaScript original.
TypeScript soporta ficheros de definición que contengan información sobre los tipos de librerías JavaScript existentes, similares a los ficheros de cabeceras de C/C++ que describen la estructura de ficheros de objetos existentes. Esto permite a otros programas usar los valores definidos en los ficheros como si fueran entidades TypeScript de tipado estático. Existen cabeceras para librerías populares como jQuery, MongoDB y D3.js, y los módulos básicos de Node.js.
El compilador de TypeScript está escrito asimismo en TypeScript, compilado a JavaScript y con Licencia Apache 2.
TypeScript se incluye como lenguaje de programación de primer nivel en Microsoft Visual Studio 2013 Update 2 y posteriores, junto a C# y otros lenguajes de Microsoft. Una extensión oficial permite a Visual Studio 2012 soportar también TypeScript.

## Historia

TypeScript fue publicado en octubre de 2012, después de dos años de desarrollo por parte de Microsoft. Poco después de su publicación, Miguel de Icaza elogió el lenguaje en sí mismo, pero criticó la falta de un IDE maduro para todas las plataformas, en ese momento Microsoft Visual Studio solo estaba disponible para Windows. En la actualidad existen múltiples editores, como Sublime Text, Vim, Emacs, Webstorm y el propio Visual Studio Code de Microsoft.
TypeScript 0.9, lanzado en 2013, agregó soporte para genéricos. La versión 1.0 de TypeScript fue publicada en la conferencia de desarrolladores Build de Microsoft en 2014.
En julio de 2014, el equipo de desarrollo de TypeScript anunció un nuevo compilador que era 5 veces más rápido al actual. Inicialmente estaba alojado en CodePlex, luego lo movieron a GitHub.
El 22 de septiembre de 2016, se lanzó TypeScript 2.0. Esta versión introdujo varias características, entre ellas la capacidad de evitar la asignación a nulo de las variables.

## Sistema de tipos

El sistema de tipos de Typescript realiza una formalización de los tipos de Javascript, mediante una representación estática de sus tipos dinámicos. Esto permite a los desarrolladores definir variables y funciones tipadas sin perder la esencia de Javascript. Poder definir los tipos durante el tiempo de diseño nos ayuda a evitar errores en tiempo de ejecución, como podría ser pasar el tipo de variable incorrecto a una función.
Además de los tipos String y Number admite los siguientes tipos básicos:
* Boolean: tipo de dato lógico que representa verdadero o falso.
* Array: tipo de dato estructurado que permite almacenar una colección de elementos.
* Tuple: similar al array, pero con un número fijo de elementos escritos.
* Enum: representa al tipo enumeración.
* Any: indica que la variable puede ser de cualquier tipo. Es muy útil a la hora de trabajar con librerías externas.
* Void: indica que una función no devolverá ningún valor.
* Never: este tipo representa el tipo de valores que nunca se producen.