0Pricing
TypeScript Academy · Lección

Eliminación de any; preferencia por unknown y reducción

Sustituya any por unknown y reducción; añada pequeños protectores y funciones de aserción; active gradualmente los indicadores strict sin romper la compilación.

Eliminación de any; preferencia por unknown y reducción es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 de 2. 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 2 lecciones en total.

Introducción

Objetivo: eliminar los usos problemáticos de any. Prefiera unknown para valores no confiables y acote el tipo mediante comprobaciones sencillas. Añadirá pequeñas guardas y activará las opciones estrictas paso a paso.

  • any → unknown
  • Acotación con typeof/in/instanceof
  • Funciones de aserción

Problemas de any

any desactiva la seguridad de tipos: las formas incorrectas o las operaciones aritméticas con cadenas pasan durante la compilación y fallan más tarde.

// any hides bugs
function avgBad(values: any): number {
  // Compiles even if values is not an array of numbers
  return values.reduce((a: number, b: number) => a + b, 0) / values.length
}

// Runtime crash examples:
// avgBad(123)
// avgBad(["1","2"]) // string addition!

unknown y acotación de tipos

Use unknown para las entradas externas. Acote el tipo con Array.isArray y typeof, y después realice los cálculos de forma segura.

// unknown forces checks
function avg(values: unknown): number {
  if (!Array.isArray(values)) throw new Error("values must be an array")
  const nums = values.filter((v): v is number => typeof v === "number")
  if (nums.length === 0) throw new Error("no numbers")
  const sum = nums.reduce((a, b) => a + b, 0)
  return sum / nums.length
}

// avg([1,2,3]) → 2; avg("oops") throws early with a clear message

Guardas de tipo

Cree un predicado x is T para acotar el tipo de las llamadas de forma clara. Mantenga las guardas pequeñas y centradas en comprobaciones estructurales.

// Small predicate to reuse narrowing
export type User = { id: string; name: string }

export function isUser(x: unknown): x is User {
  return typeof x === "object" && x !== null
    && typeof (x as any).id === "string"
    && typeof (x as any).name === "string"
}

export function hello(x: unknown) {
  if (!isUser(x)) throw new Error("invalid user")
  return `Hello, ${x.name}`
}

Funciones de aserción

Las funciones de aserción (asserts x is T) acotan el tipo después de ejecutarse. Úselas para precondiciones obligatorias y lance excepciones con mensajes claros.

// Assertion function throws or narrows
function assertUser(x: unknown): asserts x is { id: string; name: string } {
  if (typeof x !== "object" || x === null) throw new Error("not an object")
  const o = x as Record<string, unknown>
  if (typeof o.id !== "string" || typeof o.name !== "string") throw new Error("bad user")
}

export function greetUnsafe(x: unknown) {
  assertUser(x) // now x is narrowed after this call
  return `Hi ${x.name}`
}

Plan de rigor

Plan:

  • Active noImplicitAny y corrija primero los errores nuevos.
  • Introduzca guardas para las entradas externas.
  • Active strictNullChecks y gestione undefined de forma explícita.
  • Controle los any restantes con ESLint y redúzcalos con el tiempo.

Comprobación de unknown frente a any

Comprobación rápida: ¿Por qué es preferible unknown a any para datos no confiables?

Resumen

Resumen: Sustituya any por unknown, añada pequeñas guardas o aserciones y aumente las opciones estrictas paso a paso para mantener las compilaciones en verde.

Preguntas frecuentes

¿La lección «Eliminación de any; preferencia por unknown y reducción» es gratis?

Sí — el texto completo de «Eliminación de any; preferencia por unknown y reducción» 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 2 lecciones en total.

¿Qué aprenderé en «Eliminación de any; preferencia por unknown y reducción»?

Sustituya any por unknown y reducción; añada pequeños protectores y funciones de aserción; active gradualmente los indicadores strict sin romper la compilación. 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 2.

¿Cuánto tiempo toma la lección «Eliminación de any; preferencia por unknown y reducción»?

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. Eliminación de any; preferencia por unknown y reducción
  2. Aplicación gradual de flags estrictos
← Volver a TypeScript Academy