Módulo: Tipos modernos y novedades TypeScript 5.x
Este módulo forma parte del curso de TypeScript. .
Tipos modernos y novedades de TypeScript 5.x
Las versiones recientes de TypeScript han introducido un conjunto de características avanzadas que potencian enormemente el sistema de tipos del lenguaje. Estas novedades permiten expresar relaciones entre tipos con mayor precisión, reduciendo la necesidad de aserciones manuales y mejorando la experiencia de desarrollo.
El operador satisfies (TypeScript 4.9+)
El operador satisfies es una de las incorporaciones más útiles de TypeScript moderno. Permite verificar que una expresión cumple con un tipo determinado sin perder la información del tipo inferido más específico.
type Color = "rojo" | "verde" | "azul";
type Paleta = Record<string, Color | number[]>;
// Con satisfies: TypeScript infiere el tipo exacto Y valida el contrato
const paleta = {
rojo: [255, 0, 0],
verde: "verde",
azul: [0, 0, 255]
} satisfies Paleta;
// Ahora TypeScript sabe que paleta.rojo es number[], no Color | number[]
paleta.rojo.map(componente => componente * 2); // ✓ Sin error
Const assertions y tipos inmutables
Las const assertions (as const) transforman cualquier literal en su tipo más específico y de solo lectura, siendo fundamentales para crear configuraciones tipadas con seguridad máxima.
// Sin as const: tipo inferido es string[]
const rutas = ["/inicio", "/perfil", "/ajustes"];
// Con as const: tipo es readonly ["/inicio", "/perfil", "/ajustes"]
const rutasConst = ["/inicio", "/perfil", "/ajustes"] as const;
type Ruta = typeof rutasConst[number]; // "/inicio" | "/perfil" | "/ajustes"
Tipos condicionales avanzados e infer
Los tipos condicionales combinados con la palabra clave infer permiten extraer y manipular partes de tipos complejos de forma declarativa, siendo la base de muchos tipos utilitarios avanzados.
type DesempaquetarPromesa<T> = T extends Promise<infer U> ? U : T;
type ParametrosFuncion<T> = T extends (...args: infer P) => any ? P : never;
type Resultado = DesempaquetarPromesa<Promise<string>>; // string
Template literal types
Los template literal types permiten crear tipos de cadenas dinámicas a partir de combinaciones de literales, generando uniones de forma automática y garantizando la corrección de cadenas con estructura predefinida.
type Método = "GET" | "POST" | "PUT" | "DELETE";
type Endpoint = `/api/${string}`;
type RutaAPI = `${Lowercase<Método>}:${Endpoint}`;
Decoradores estándar (TypeScript 5.0+)
TypeScript 5.0 implementó la propuesta oficial de decoradores ECMAScript Stage 3, unificando la sintaxis con el estándar de JavaScript y eliminando la dependencia de experimentalDecorators.
// Decorador de clase estándar TC39
function registrar<T extends { new(...args: any[]): {} }>(clase: T, contexto: ClassDecoratorContext) {
console.log(`Clase registrada: ${contexto.name}`);
return clase;
}
@registrar
class Servicio {
ejecutar() { return "ejecutando"; }
}
Otros módulos de este curso
Tipos modernos y novedades TypeScript 5.x
Todos los módulos del curso
Navega entre los módulos de TypeScript
Tipos modernos y novedades TypeScript 5.x
Estás aquíExplora más sobre TypeScript
Descubre más recursos de TypeScript
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, TypeScript es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.