TypeScript
Es el lenguaje por excelencia en el cual se encuentra escrito notes/Angular.
TypeScript es un superset de JavaScript, creado y mantenido por Microsoft que provee tipado fuerte (estatico) a JavaScript. Este lenguaje compila directamente a JavaScript.
Se trata de mantener tu codigo funcional y limpio, ademas, puede ser copilado a versiones antiguas de JavaScript (Como ES2015). Este superset es soportado por todas las herramientas y frameworks populares.
# Type Safety
Mantiene la aplicacion libre de Type Errors. Lenguajes como Java, C#, C++ tienen este mecanismo integrado. Mediante este, podemos declarar el tipo de una variable y mantenernos libres de insertar valores de otros tipos dentro de una variable.
Este mecanismo es removido al momento de conversion de TypeScript a JavaScript.
# Instalacion
TypeScript se encuentra disponible como un paquete de npm, por tanto, se puede instalar de la siguiente forma en un proyecto ya inicializado.
| |
Posteriormente, podemos inicializar typescript con el comando:
| |
Para ejecutar este comando, debemos asegurarnos que los scripts habilitados en nuestro sistema operativo. En Windows 10 se realiza utilizando el siguiente comando en PowerShell ejecutandolo como administrador:
| |
# Compilacion
Es posible compilar el codigo utilizando el comando tsc. Mediante este, podremos compilar el codigo de TypeScript a JavaScript.
# Tipos de Datos
En TypeScript, se tienen soporte a algunos de los tipos de datos basicos de JavaScript y adicionalmente, agrega unos cuantos. La lista completa de ellos es la siguiente:
- string. Tipos de datos para representar una cadena de texto
- number. Representa numeros reales y enteros
- boolean. Representa un estado, true o false
- array. Representa una coleccion de elementos. Gracias a TS podemos definir arrays solo de un tipo especifico como number[] o string[]
- enum. Representa un grupo limitado de elementos, un conjunto de constantes que nunca cambian.
- tuple. Tienen una sintaxis bastante similar a los arrays, solo que estos te protejen de salir de los indices limites de la tupla
- any . Es como un placeholder que sirve para guardar un valor que puede ser de cualquier tipo de datos valido.
- void. Es otro placeholder que sirve para representar un retorno vacio, es normal verlo en las funciones que no tienen un statement return.
- never.
# Inferencia de tipos
TypeScript tiene soporte para la Inferencia de Tipos, es decir, que muchas veces no se necesita especificar el tipo de datos que se requiere de una variable. Sin embargo Esta es una practica para nada recomendada.
Lo comun en TS es escribir el tipo de una variable de la siguiente forma:
| |
# Tipos de Union e Interseccion
# Genericos
# Tipos Literales
# Funciones
En TypeScript puedes escribir una funcion de multiples formas. Las formas comunes de JavaScript son soportadas (Funcion Expresada, Funcion Declarada, y Arrow Function)
| |
Sin embargo, en TypeScript,se deben de declarar los tipos de los parametros que recibe y el tipo de datos que retorna.
| |
# Funcion Generica
Una Funcion Generica te permite utilizar cualquier tipo de datos como entrada y como salida, sin ningun problema. Es muy util cuando se empieza a trabajar con clases debido a que estas pueden servir como un tipo de dato mas.
| |
Ahora podemos utilizar esta funcion con cualquier tipo de dato valido!.
# Parametros Opcionales
Adicionalmente, podemos colocar un opcional a los parametros de una funcion, mediante esta, podemos indicar que un elemento puede ser o no insertado en la funcion.
| |
# Clases
Utiliza una Sintaxis extremadamente similar a javaScript, solo se implementa la declaracion de tipos.
| |
En notes/Angular las clases se utilizan para guardar todos los business logic y para crear componentes.
# protected
Este es un modificador que todavia no esta incluido en ES. Por tanto, se debe utilizar un keyword reservado para poder hacer la herencia de atributos entre clases de forma protegida.
| |
# Miembros estaticos
Esta funcionalidad tambien ha sido incluida en ES6. La sintaxis es similar en TS.
| |
# Interfaces
Un componente bastante importante que integra TypeScript. Sirve para establecer contratos, extensibilidad, seguir el principio Open/Closed entre muchas otras cosas.
Su sintaxis es bastante similar a Java:
| |
En TypeScript, estos pueden servir como contratos para definir objetos sin utilizar new y definirlos como objetos literales.
| |
Es una alternativa un poco mas “dinamica” a utilizar las clases. Sin embargo, esta tambien puede tener el comportamiento de clase abstracta pura.
| |
# Decorators
Sirven para modificar el comportamiento de una clase o un metodo a la hora de correr el codigo. No son muy normales verlos en codigo estandar de TypeScript pero si son implementados por herramientas como Angular.
| |