La inferencia de tipos es una característica poderosa de TypeScript que permite al compilador deducir automáticamente el tipo de una variable, función o expresión sin necesidad de que el programador lo especifique explícitamente. Esto hace que el código sea más conciso y legible, al tiempo que mantiene la seguridad de tipos.
Conceptos Clave
- Inferencia de Tipos en Variables: TypeScript puede inferir el tipo de una variable a partir del valor con el que se inicializa.
- Inferencia de Tipos en Funciones: TypeScript puede inferir el tipo de retorno de una función a partir de su cuerpo.
- Contextual Typing: TypeScript puede inferir tipos basándose en el contexto en el que se utiliza una expresión.
Inferencia de Tipos en Variables
Cuando declaramos una variable y la inicializamos con un valor, TypeScript infiere el tipo de la variable a partir del valor asignado.
let mensaje = "Hola, TypeScript!"; // TypeScript infiere que 'mensaje' es de tipo 'string' let numero = 42; // TypeScript infiere que 'numero' es de tipo 'number' let esVerdadero = true; // TypeScript infiere que 'esVerdadero' es de tipo 'boolean'
En estos ejemplos, no es necesario especificar explícitamente los tipos string
, number
o boolean
porque TypeScript los infiere automáticamente.
Inferencia de Tipos en Funciones
TypeScript también puede inferir el tipo de retorno de una función basándose en el valor que la función devuelve.
function suma(a: number, b: number) { return a + b; // TypeScript infiere que el tipo de retorno es 'number' } let resultado = suma(5, 7); // 'resultado' es de tipo 'number'
En este caso, TypeScript infiere que el tipo de retorno de la función suma
es number
porque la expresión a + b
es de tipo number
.
Contextual Typing
El "contextual typing" ocurre cuando TypeScript infiere tipos basándose en el contexto en el que se utiliza una expresión. Esto es común en funciones de callback y en métodos de objetos.
const nombres = ["Alice", "Bob", "Charlie"]; nombres.forEach((nombre) => { console.log(nombre.toUpperCase()); // TypeScript infiere que 'nombre' es de tipo 'string' });
En este ejemplo, TypeScript infiere que nombre
es de tipo string
porque nombres
es un array de strings y el método forEach
pasa cada elemento del array a la función de callback.
Ejercicios Prácticos
Ejercicio 1
Declara una variable edad
e inicialízala con el valor 30
. ¿Qué tipo infiere TypeScript para esta variable?
Solución: TypeScript infiere que edad
es de tipo number
.
Ejercicio 2
Escribe una función multiplica
que tome dos parámetros a
y b
de tipo number
y devuelva su producto. ¿Qué tipo infiere TypeScript para el valor de retorno?
Solución: TypeScript infiere que el tipo de retorno de multiplica
es number
.
Ejercicio 3
Dado el siguiente array de números, usa el método map
para crear un nuevo array donde cada número se multiplica por 2. ¿Qué tipo infiere TypeScript para los elementos del nuevo array?
Solución: TypeScript infiere que los elementos de dobles
son de tipo number
.
Resumen
La inferencia de tipos en TypeScript permite escribir código más limpio y conciso sin sacrificar la seguridad de tipos. TypeScript puede inferir tipos en variables, funciones y basándose en el contexto en el que se utilizan las expresiones. Esta característica es especialmente útil para mantener el código legible y fácil de mantener.
En el próximo tema, exploraremos los Tipos Unión e Intersección, que nos permitirán trabajar con tipos más complejos y flexibles.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas