Como mencionamos anteriormente algunos lenguajes de programaci贸n nos permiten detectar algunos errores durante el proceso de compilaci贸n, es decir antes de ejecutar el programa. La detecci贸n de errores dentro del c贸digo que se realiza sin ejecutarlo se conoce como static checking. El determinar que es y que no es un error mediante la determinaci贸n del tipo de valores que se est谩n utilizando se conoce como static type checking.
TypeScript verifica un programa antes de que este se ejecute, y lo hace verificando los tipos de valores (static type checking). Para el siguiente ejemplo se ha introducido un error al escribir la propiedad de forma intencional.
const rectangulo = { altura: 10, anchura: 15 };
const area = rectangulo.altura * rectangulo.anchuRa;
Al intentar ejecutar el c贸digo anterior TypeScript me mostrar谩 un error.
Property 'anchuRa' does not exist on type '{ altura: number; anchura: number; }'. Did you mean 'anchura'?
TypeScript detecta el error durante el proceso de compilaci贸n pero de igual forma lo hacen editores de c贸digo como Visual Studio Code que tienen soporte integrado para TypeScript.
驴Cu谩les son las caracter铆sticas que TypeScript agrega a JavaScript?
Sintaxis
TypeScript es un superset de JavaScript por lo cual podemos escribir JavaScript dentro de un archivo TypeScript. Por sintaxis nos referimos a la manera en que se escribe el c贸digo para un programa. Por ejemplo el siguiente c贸digo tiene un error debido a que no se ha cerrado el par茅ntesis.
let a = (4
Visual Studio Code me mostrar谩 el siguiente error.
console.log(4 / []);
TypeScript no considera ning煤n bloque de c贸digo de JavaScript como un error de su sintaxis. Esto quiere decir que se puede utilizar cualquier bloque de JavaScript y ejecutarlo dentro de TypeScript sin preocuparnos de como ha sido escrito.
Tipos
TypeScript es un superset de tipos (typed superset), lo que quiere decir que a帽ade reglas acerca de como deben ser utilizados los valores. En el ejemplo anterior observamos que rectangulo.anchuRa
no es un error de sintaxis sino que se ha escrito de forma incorrecta el nombre de la propiedad.
console.log(4 / []);
La expresi贸n anterior corresponde a un error de sintaxis debido a que se produce un n煤mero infinito. Visual Studio Code me mostrar谩 el siguiente error.
The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
Si bien es posible que la intenci贸n sea realmente dividir un n煤mero entre un arreglo, sin embargo la mayor铆a de las veces este es un error de programaci贸n. El verificador de tipos de TypeScript esta dise帽ado para permitir que los programas puedan capturar errores comunes tanto como sea posible.
Si se copia el c贸digo de JavaScript a TypeScript, es posible que se muestren algunos errores dependiendo de como el c贸digo este escrito.
Errores en tiempo de ejecuci贸n
TypeScript tambi茅n es un lenguaje de programaci贸n que preserva el comportamiento de en ejecuci贸n de JavaScript. Por ejemplo, dividir entre cero en JavaScript produce un error Infinity
en lugar de disparar un error en tiempo de ejecuci贸n (runtime exception).
Esto quiere decir que si copias c贸digo JavaScript a TypeScript, esta garantizado que se ejecutara, incluso si TypeScript determina que existen errores en los tipos.
El mantener el comportamiento en ejecuci贸n es uno de los fundamentos de TypeScript debido a que permite una transici贸n sencilla entre los dos lenguajes sin tener que preocuparnos por aquellas diferencias que pudieran evitar que se empiece a migrar a este nuevo lenguaje.
Eliminaci贸n del tipado
Cuando el compilador termina de revisar el c贸digo, elimina los tipos para producir un resultado “compilado”. Esto quiere decir que cuando el c贸digo ha sido compilado, el JavaScript resultante no contiene informaci贸n acerca de los tipos.
TypeScript nunca cambia el comportamiento de un programa que esta basado en tipos interferidos. Puede ser que aparezcan errores durante la compilaci贸n, pero el sistema de tipado no tiene ingerencia en como se ejecuta el programa.
TypeScript no provee ninguna librer铆a runtime adicional. Los programas utilizan las mismas librer铆as est谩ndar (o librer铆as externas) que el resto de programas escritos en JavaScript, as铆 que no se requiere volver a aprender nuevas librer铆as.
驴Debo aprender TypeScript o JavaScript?
Esta pregunta es muy com煤n. La realidad es que no se puede aprender TypeScript sin impl铆citamente aprender JavaScript ya que TypeScript comparte la sintaxis y comportamiento de JavaScript, de tal forma que aprender JavaScript implica entender como TypeScript funciona.
Si te encuentras en la necesidad de buscar informaci贸n acerca de como escribir un algoritmo en TypeScript recuerda que: TypeScript es JavaScript con un compilador que revisa el tipado. La forma en la que por ejemplo se ordena un arreglo en TypeScript es la misma forma en la que se hace en JavaScript. Muchas de las preguntas que puedan aparecer en relaci贸n a como hacer algo en TypeScript pueden son en realidad preguntas de como hacerlo en JavaScript.