Typescript es una extensión de Javascript. En este sentido, es un lenguaje de programación propio que se basa en Javascript para darnos herramientas de desarrollo en cualquier escala de proyectos. En resumen, esto significa que los programas de JavaScript son programas válidos de TypeScript, a pesar de que TypeScript sea otro lenguaje de programación.
Es un lenguaje orientado a objetos. Esto quiere decir que tanto el cliente como el servidor tienen acceso a la escritura de código. Además, se trata de un código abierto.
Por si fuera poco, uno de los beneficios adicionales de esta característica del lenguaje, es que pone a disposición el enorme ecosistema de librerías y frameworks que existen para JavaScript. Con Typescript podemos desarrollas aplicaciones con React, Vue, Angular, etc.
¿Pero si es un superset de Javascript, se ejecuta Javascript? Sí, Typescript transpila a Javascript. ¿Qué significa esto? Que cuando se ejecuta el código de TS, se convierte a Javascript (con las caracteristicas de Typescript) y allí recién se ejecuta.
La principal característica de Typescript es el tipado estático.
let edad : number; // Asignamos el tipo 'number'
edad = 20; // Ahora sólo puede asignar valores tipo 'number'
El contraste de estos lenguajes son los de tipado dinámico, como JavaScript, estos lenguajes suelen ser mucho más flexibles, lo que nos permite escribir código menos verboso.
Por otro lado, los lenguajes de tipado estático se prestan a la implementación de herramientas de desarrollo más avanzadas, como:
El tipado se refiere a cómo se declaran los tipos de variables. Estos pueden variar desde tipos simples como number y string hasta estructuras complejas.
Puedes encontrar dos categorías en los lenguajes de programación: Tipado estático y tipado dinámico.
En lenguajes con tipado estático, el tipo de variable se conoce en el tiempo de compilación, mientras que en lenguajes con tipado dinámico, el tipo de variable se conoce solamente cuando se ejecuta el programa.
JavaScript no admite tipado estático. Typescript sí, y ese esa es su ventaja.
Estas son las principales diferencias entre estos 2 lenguajes:
Si entraramos en un proyecto y tenemos una funcion que trae datos de una api, no sabemos cuales son los datos que trae esa API salvo que ejecutemos esa función:
const response = axios.get(endpoint);
console.log(response);
Pero si la cosa cambiara, y lo hicieramos con Typescript, podríamos ver como está tipada la llamada a la API para ver que datos puede traer:
const response: UsuarioInterface = axios.get(endpoint);
console.log(response);
Fijate la diferencia entre las 2 lineas, entre la primera que solo sabemos que es una llamada a la API y la segunda, que sabemos que va a traer algo relacionado a un usuario. Y si entraramos en la interface (interfaz) de usuario, podriamos ver los datos que esperamos de la API.
export interface UsuarioInterface {
id: number,
nombre: string,
apellido: string
}
Osea, toda la info que necesitamos sin tener que hacer la llamada a la API, cuando con Javascript tendriamos que haber llevado a cabo otros pasos.