Dominando el Mundo de los Tipos en TypeScript

Pablo Contreras
4 min readJun 1, 2023

--

¡Hola, amantes del código! Hoy, nos adentramos en el fascinante laberinto de los “tipos” en TypeScript. ¿Alguna vez te has preguntado cómo construir estructuras de datos más robustas y predecibles? ¿O quizás cómo reducir los errores inesperados en tu código? Bueno, estás de suerte, porque TypeScript tiene la respuesta a estas preguntas con su variada gama de “tipos”. Prepárate para un viaje de descubrimiento donde revelaremos el verdadero poder de cada uno de ellos. ¡Agarra tu taza de café (o té), es hora de sumergirse en el maravilloso mundo de los tipos de TypeScript!

Introducción a los Tipos:

1. number: ¿Recuerdas las matemáticas del colegio? No te preocupes, no vamos a hacer ninguna operación complicada. En TypeScript, number abarca tanto enteros como flotantes. Ejemplo:

let age: number = 25; 
// ¡Perfecto! 'age' es un número.

let age: number = "25"; 
// Error! TypeScript esperaba un número, pero recibió una cadena.

2. string: Aquí es donde guardamos nuestras palabras y frases. Ejemplo:

let greeting: string = "¡Hola TypeScript!";
// ¡Excelente! 'greeting' es una cadena.

let greeting: string = 25;
// Error! TypeScript esperaba una cadena, pero recibió un número.

3. boolean: Nos permite tener respuestas binarias — true o false. Ejemplo:

let isTypeScriptAwesome: boolean = true;
// ¡Muy bien! 'isTypeScriptAwesome' es un valor booleano.

let isTypeScriptAwesome: boolean = "true";
// Error! TypeScript esperaba un booleano, pero recibió una cadena.

4. any: Cuando TypeScript se vuelve un poco indeciso, usamos any. Ejemplo:

let unsureVariable: any = "¿Soy una cadena? ¿Un número? ¿Quién sabe?";
// Genial! Con 'any', TypeScript aceptará cualquier tipo.

// La belleza y maldición de 'any' es que no hay errores de tipo! Úsalo con cuidado.

5. void: Este es cuando no queremos que una función retorne algo. No te preocupes, no es tan tenebroso como suena. Ejemplo:

function warnUser(): void {
console.log("¡Cuidado con el bug!");
}
// Perfecto! La función 'warnUser' no retorna nada, así que su tipo es 'void'.

function warnUser(): void {
return "¡Cuidado con el bug!";
}
// Error! TypeScript esperaba que 'warnUser' no devolviera nada, pero recibió una cadena.

6. null y undefined: Cuando algo está ausente o no se ha definido aún. Son como los fantasmas del código. Ejemplo:

let ghostVariable: null = null;
let undefinedVariable: undefined = undefined;
// Bien hecho! 'ghostVariable' es null y 'undefinedVariable' es undefined.

let ghostVariable: null = "not null";
let undefinedVariable: undefined = "defined";
// Error! TypeScript esperaba que 'ghostVariable' fuera null y 'undefinedVariable' fuera undefined, pero recibió cadenas en ambos casos.

7. never: Este tipo representa el tipo de valores que nunca ocurren. Por ejemplo, una función que siempre lanza una excepción. Ejemplo:

function throwError(message: string): never {
throw new Error(message);
}
// Perfecto! 'throwError' nunca completa su ejecución, por lo tanto, su tipo es 'never'.

function throwError(message: string): never {
return message;
}
// Error! TypeScript esperaba que 'throwError' nunca completara su ejecución, pero vio que podía retornar una cadena.

8. object: Cuando deseas ser un poco más estructurado con tus datos. Ejemplo:

let user: object = {
name: "Bob",
age: 30
};
// ¡Maravilloso! 'user' es un objeto.

let user: object = "Bob";
// Error! TypeScript esperaba un objeto, pero recibió una cadena.

9. symbol: Estos son únicos e inmutables. Como las huellas dactilares, pero para el código. Ejemplo:

let sym1: symbol = Symbol("key1");
// ¡Genial! 'sym1' es un símbolo.

let sym1: symbol = "key1";
// Error! TypeScript esperaba un símbolo, pero recibió una cadena.

10. Y luego están enum, tuple, array, union, intersection, type aliases y type assertions. Todos ellos son como la salsa especial en la hamburguesa TypeScript. Pero no te preocupes, los cubriremos en newsletters futuras.

Espero que hayas disfrutado de este paseo por el parque de TypeScript. Recuerda, los tipos son tus amigos, no tus enemigos. Ellos están aquí para hacer tu vida de programador más fácil, no para llevarte al borde de las lágrimas. Bueno, a menos que estés usando any en todos lados... ¡eso sí que podría causarte lágrimas!

Gracias por acompañarme en este viaje por el universo TypeScript. Recuerda, cada línea de código es un paso hacia convertirte en el maestro del universo de la programación. ¡Hasta la próxima!

--

--

Pablo Contreras

Desarrollador con conocimientos en JS, TS y Python. Construí soluciones para restaurantes y fintech. Aprendiendo y compartiendo en mi newsletter.