TypeScript 5.0: decoradores estándar y parámetros de tipo const
Utilice la nueva propuesta de decoradores y parámetros genéricos const.
TypeScript 5.0: decoradores estándar y parámetros de tipo const es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.
Introducción a TypeScript 5.0
TypeScript 5.0 incorporó la propuesta estandarizada de decoradores de TC39 (Stage 3), parámetros de tipo const, una nueva sintaxis de módulos literal y mejoras significativas de rendimiento.
// TS 5.0 release: March 2023
// npm install typescript@5Decoradores Stage 3
TS 5.0 implementa la propuesta oficial de decoradores Stage 3 de TC39, diferente de los decoradores experimentales heredados. Ya no es necesario experimentalDecorators: true.
// New standard decorator — no experimentalDecorators flag needed
function logged(target: Function, ctx: ClassDecoratorContext) {
return class extends (target as any) {
constructor(...args: any[]) {
console.log("Creating", target.name);
super(...args);
}
};
}
@logged
class User { constructor(public name: string) {} }Objeto de contexto del decorador
Los nuevos decoradores reciben un objeto tipado ClassDecoratorContext o MethodDecoratorContext con metadatos sobre el elemento decorado.
function sealed(_: Function, ctx: ClassDecoratorContext) {
ctx.addInitializer(function(this: any) {
Object.seal(this);
});
}Decoradores de métodos en TS 5.0
Los decoradores de métodos reciben el método y un ClassMethodDecoratorContext, en sustitución de la antigua firma (target, key, descriptor).
function measure(_: Function, ctx: ClassMethodDecoratorContext) {
return function(this: any, ...args: any[]) {
const start = performance.now();
const result = (_.apply as any)(this, args);
console.log(ctx.name, performance.now() - start, "ms");
return result;
};
}Parámetros de tipo const
Usar const en un parámetro de tipo hace que TypeScript infiera tipos literales para los argumentos en lugar de ampliarlos al tipo base.
function identity<const T>(val: T): T { return val; }
const a = identity("hello"); // type: "hello" (not string)
const b = identity([1, 2, 3]); // type: readonly [1, 2, 3]Genéricos const frente a as const
Los parámetros de tipo const aplican automáticamente el efecto de estrechamiento; quienes realizan las llamadas no necesitan añadir as const en cada punto de llamada.
// Without const param: callers need as const
function makeRoute<T extends string>(path: T) { return path; }
const r1 = makeRoute("/home" as const); // "/home"
// With const param: automatic
function makeRoute2<const T extends string>(path: T) { return path; }
const r2 = makeRoute2("/home"); // "/home" — no as const neededResolución de módulos del bundler
TS 5.0 añadió moduleResolution: "bundler" para proyectos que utilizan Vite, esbuild u otros bundlers similares que gestionan por sí mismos la resolución de módulos.
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler"
}
}verbatimModuleSyntax
verbatimModuleSyntax: true exige que las importaciones que solo contienen tipos utilicen import type, lo que evita que las importaciones se filtren al tiempo de ejecución.
// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }
// Now this errors: must be import type
import { User } from "./types"; // Error if User is only a type
import type { User } from "./types"; // OKMejoras de rendimiento
TS 5.0 mejoró la caché de instanciación de tipos y el rendimiento del estrechamiento, haciendo que los proyectos grandes sean más rápidos sin cambios en el código.
# TS 5.0 compile benchmarks: ~10-15% faster on large projectsMigración desde decoradores heredados
Los experimentalDecorators heredados siguen funcionando, pero finalmente quedarán obsoletos. Migre a los decoradores de TC39 para garantizar la compatibilidad futura.
// Legacy: requires experimentalDecorators: true
@Component({ selector: "app-root" })
class AppComponent {}
// New TC39 decorator: no flag needed (but Angular/NestJS need updates)Resumen: TypeScript 5.0
TypeScript 5.0 incorporó decoradores estándar de TC39, parámetros de tipo const para la inferencia automática de literales, moduleResolution: "bundler", verbatimModuleSyntax y mejoras significativas de rendimiento.
Comprobación rápida
¿Qué hace const en un parámetro de tipo?
Lo que ha aprendido
TypeScript 5.0: los decoradores estándar de TC39 sustituyen a los experimentales, los parámetros de tipo const estrechan automáticamente los argumentos a tipos literales, moduleResolution: "bundler" es compatible con herramientas de compilación modernas y verbatimModuleSyntax exige import type.
Preguntas frecuentes
¿La lección «TypeScript 5.0: decoradores estándar y parámetros de tipo const» es gratis?
Sí — el texto completo de «TypeScript 5.0: decoradores estándar y parámetros de tipo const» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.
¿Qué aprenderé en «TypeScript 5.0: decoradores estándar y parámetros de tipo const»?
Utilice la nueva propuesta de decoradores y parámetros genéricos const. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «TypeScript 5.0: decoradores estándar y parámetros de tipo const»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- TypeScript 5.0: decoradores estándar y parámetros de tipo const
- TypeScript 5.1-5.2: mejoras en la inferencia
- TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer
- TypeScript 5.5+: declaraciones aisladas y novedades