Bruno R

Lo Basico

x
portfolio-next-l5vb64p5k-bandikyu.vercel.app

Considerando el siguiente caso:

// Accediendo a la propiedad 'toLowerCase'
 // en 'message' y luego llamándolo
message.toLowerCase();
// Llamando a 'message'
message();

Asumiendo que no sabemos el valor de message no podremos decir que resultado obtendremos de el, (el comportamiento de una operacion depende enteramente del valor inicial que teniamos). Entonces:

Es
¿tiene una propiedad llamada
Si la tiene, ¿se la puede llamar?
Si ambos son invocables, ¿que devuelven?

Las respuestas a estas preguntas suelen ser cosas que tenemos en la cabeza cuando escribimos el codigo, y esperamos a tener todos los detalles correctos a la hora de ejecutarlo.

const message = "Hola Type";

Si este fuera el valor de message, nos retornaria la misma cadena en minusculas cuando usamos toLowerCase() pero en la segunda llamada, tendriamos un error:

TypeError: message is not a function

Cuando ejecutamos nuestro codigo, en el tiempo de ejecucion, javascript identifica el tipo de valor y en base a eso determina el comportamiento y capacidades que este tendra.

Por esta razon el string message no es reconocido como funcion.

Para algunos valores, como las primitivas string y numbre, podemos identificar su tipo en runtime usando typeof pero para cosas como funciones, no existe mecanismo equivalente

EJ ⇒

function fn(x) {
  return x.flip();
}
/* Esta funcion funcionara si obtiene como parametro un objeto con
una metodo flip en su interior, pero JS no muestra esta informacion para verificarla
muentra se ejecuta el codigo. */
/* La unica manera de verificar que hace fn en JS puro es lamar a la funcion y ver 
que sucede */

Este tipo de comportamientos hacen que sea dificil predecir que hara el codigo antes de la ejecucion del mismo, mientras lo escribimos.

Entonces se puede ver como que un tipo es describir que valores se pueden pasar a una funcion y cual sera el resultado de esta. (JS solo propociona escritura dinamica: ejecutar el codigo para ver que sucede).

TS salda este tipo de huecos con un sistema de tipado estatico, y asi lograr predicciones sobre que se espera antes de que ocurra.

Comprobacion estatica de tipos

TypeScript nos ayuda a encontrar errores antes de que se ejecute el codigo, como un verificador de tipo estatico. Los sistemas de tipos estaticos describiendo las formas y comportamientos que tendran nuestros valores cuando ejecutemos el programa. Un verificador de tipos como TS usa esa informacion y nos dice cuando las cosas pueden complicarse.

const message = "hello!";
 
message();
This expression is not callable.
  Type 'String' has no call signatures.

Ejecutar el ejemplo anterior con TS dara un mensaje de error antes de ejecutar el codigo en primer lugar.

tsc, el compilador de TypeScript