0Pricing
TypeScript Academy · Lección

TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer

Aplique la utilidad NoInfer y la nueva reducción de tipos en switch/case.

TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 3 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.

Descripción general de TypeScript 5.3

TypeScript 5.3 (noviembre de 2023) incorporó una mejora de la reducción de tipos en instrucciones switch/case, compatibilidad con tipos importados mediante JSDoc y el modo de resolución en import type.

// npm install typescript@5.3

Mejora de la reducción en switch/case

TS 5.3 mejoró la reducción de tipos dentro de las instrucciones switch, especialmente en uniones discriminadas con varios casos.

type Result = { status: "ok"; data: string } | { status: "err"; code: number };

function handle(r: Result) {
  switch (r.status) {
    case "ok":
      console.log(r.data);   // r: { status: "ok"; data: string } — narrowed
      break;
    case "err":
      console.log(r.code);   // r: { status: "err"; code: number } — narrowed
      break;
  }
}

import type en JSDoc

TS 5.3 añadió compatibilidad con la etiqueta JSDoc @import para importaciones exclusivas de tipos en archivos JavaScript.

/** @import { User } from "./types.js" */

/** @param {User} user */
function greet(user) {
  console.log(user.name);
}

resolution-mode en import type

TS 5.3 permite especificar resolution-mode en import type para controlar si la importación se resuelve como CommonJS o ESM.

import type { User } from "some-library" with { "resolution-mode": "require" };

Descripción general de TypeScript 5.4

TypeScript 5.4 (marzo de 2024) introdujo el tipo utilitario NoInfer, conservó la reducción de tipos en cierres y añadió tipos para Object.groupBy y Map.groupBy.

// npm install typescript@5.4

Tipo utilitario NoInfer<T>

NoInfer impide que TypeScript use un argumento genérico como sitio de inferencia, y obliga a inferir el tipo únicamente a partir de los demás argumentos.

function createStore<T>(initial: T, onChange: (val: NoInfer<T>) => void) {
  // T inferred from initial, not from onChange callback
}

createStore({ count: 0 }, (val) => {
  // val: { count: number } — inferred from initial only
});

Por qué es importante NoInfer

Sin NoInfer, TypeScript intentaría inferir T a partir de ambos argumentos y podría ampliar el tipo de forma inesperada.

// Before NoInfer: T may be widened by the callback
function createStore<T>(initial: T, onChange: (val: T) => void) {}
createStore({ count: 0 }, (val: { count: number; extra: string }) => {});
// T widened to include extra — not what we want

Conservación de la reducción tras los cierres

TS 5.4 conserva la reducción de tipos en los cierres cuando la variable cuyo tipo se ha reducido no se asigna después del cierre.

function process(val: string | null) {
  if (!val) return;
  // val: string
  setTimeout(() => {
    console.log(val.toUpperCase()); // TS 5.4: still string — not widened
  }, 100);
}

Tipado de Object.groupBy

TS 5.4 añadió tipos para los métodos estáticos Object.groupBy y Map.groupBy de ES2024.

const users = [
  { name: "Alice", role: "admin" },
  { name: "Bob", role: "user" },
];
const grouped = Object.groupBy(users, (u) => u.role);
// grouped: { [role: string]: { name: string; role: string }[] }

Mejora de la emisión de declaraciones

TS 5.4 mejoró la emisión de archivos de declaración en casos complejos que implican tipos mapeados y tipos condicionales, lo que reduce los errores falsos en los archivos .d.ts generados.

// Fewer "Type ... is not assignable to type ..." errors
// in generated declaration files from TS 5.4 onward

Resumen: TS 5.3-5.4

TS 5.3: mejora de la reducción en switch/case y compatibilidad con @import en JSDoc. TS 5.4: NoInfer para bloquear sitios de inferencia de tipos no deseados, conservación de la reducción en cierres y tipos para Object.groupBy.

Comprobación rápida

¿Qué impide NoInfer?

Lo que ha aprendido

TS 5.3 mejoró la reducción en switch/case y añadió tipos importados mediante JSDoc. TS 5.4 introdujo NoInfer para controlar los sitios de inferencia, conservó la reducción a través de los cierres y añadió tipos de Object.groupBy para ES2024.

Preguntas frecuentes

¿La lección «TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer» es gratis?

Sí — el texto completo de «TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer» 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.3-5.4: nueva reducción de tipos y NoInfer»?

Aplique la utilidad NoInfer y la nueva reducción de tipos en switch/case. 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 3 de 4.

¿Cuánto tiempo toma la lección «TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer»?

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

  1. TypeScript 5.0: decoradores estándar y parámetros de tipo const
  2. TypeScript 5.1-5.2: mejoras en la inferencia
  3. TypeScript 5.3-5.4: nueva reducción de tipos y NoInfer
  4. TypeScript 5.5+: declaraciones aisladas y novedades
← Volver a TypeScript Academy