TypeScript es un lenguaje de programación basado en JavaScript que le agrega a este un tipado estatico. Suele llamarse un superset de JavaScript. Fue creado por Microsoft para brindarle mas seguridad a JavaScript. Una gran diferencia es que TypeScript se ejecuta en tiempo de compilacion y no de ejecución. En la ejecucion, TypeScript se convierte a JavaScript para que el navegador lo entienda.

¿A que me refiero con tipado estatico? Veamos este ejemplo

let nombre="Alejo"
nombre=1
let nombre="Alejo"
nombre=1 //Error: Type 'number' is not assignable to type 'string'

Inferencia

Como supo TypeScript que el valor nombre es un string? Porque lo infiere. Si declaro la variable y le asigno un valor determinado, TypeScript va a inferir que ese valor es del tipo que le asigné. Por lo tanto, respetará el tipo. Si queres, podes asignarle el tipo pero como buena practica se recomienda no asignar tipos a las cosas que TypeScript puede inferir. Si quisieras aclarar que tipo de dato es, podes hacerlo asi

let nombre:string="Alejo"

La inferencia también se da por consecuencia, por ejemplo

let a=1
let b=2
let c=a+b

Variables con varios tipos

Vos también podes agregarle mas de un tipo a una variable. Supongamos que tenes una variable que puede aceptar tanto numbers como strings, como un número de documento.

ATENTI

Siempre que trabajes con numeros de documento debería ser un string, ya que los datos de tipo number solo estan reservados a aquellos datos con los que vamos a hacer calculo

let dni: string | number

Inclusive si queres podes pasarle valores

let dni: string | 0