0Pricing
TypeScript Academy · Lección

satisfies frente a la aserción as

Comprenda por qué satisfies es más seguro que convertir tipos con as.

satisfies frente a la aserción as 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.

Qué hace as

La aserción as indica al compilador que debe confiar en usted respecto a un tipo. No comprueba que el valor realmente sea compatible; simplemente reemplaza el tipo inferido.

const value = { color: "red" } as { color: string; size: number };
// No error even though size is missing!
console.log(value.color);

as omite la seguridad

Como as omite la validación, puede ocultar errores reales. Al objeto anterior le falta size, pero TypeScript no informa de ningún problema.

type Config = { color: string; size: number };
const broken = { color: "red" } as Config;
// broken.size is typed number but is actually undefined at runtime
console.log(broken.size); // undefined

satisfies valida en su lugar

Reemplazar as por satisfies convierte ese error silencioso en un error de compilación claro, porque el objeto realmente debe coincidir con el tipo.

type Config = { color: string; size: number };
// const c = { color: "red" } satisfies Config; // Error: size missing
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.size);

as puede forzar tipos incorrectos

Incluso puede afirmar tipos completamente incompatibles mediante una doble aserción, algo peligroso que debería usarse rara vez.

const n = "hello" as unknown as number;
// n is typed number but is actually a string
console.log(typeof n); // "string"

satisfies nunca falsea los valores

A diferencia de as, satisfies no puede utilizarse para afirmar un tipo incompatible. Solo confirma que el valor ya es compatible.

// const x = "hello" satisfies number; // Error: string not assignable to number
const y = 42 satisfies number;
console.log(y);

as pierde las comprobaciones de propiedades adicionales

Con as, las claves adicionales o escritas incorrectamente pasan inadvertidas. satisfies sigue señalándolas y detecta los errores tipográficos.

type Config = { mode: string };
const withAs = { mdoe: "dark" } as Config;   // typo passes silently
// const withSat = { mdoe: "dark" } satisfies Config; // Error: mdoe
console.log(JSON.stringify(withAs));

Cuándo es legítimo usar as

as tiene usos válidos, como estrechar unknown después de una comprobación en tiempo de ejecución o trabajar con el DOM. Sin embargo, para los objetos de configuración, prefiera satisfies.

const data: unknown = JSON.parse("{ }");
// After your own runtime validation, as can express the result.
const obj = data as Record<string, unknown>;
console.log(typeof obj);

Preferir satisfies para la configuración

Para configuraciones, mapas de rutas y paletas, satisfies ofrece validación e inferencia precisa. as no ofrece ninguna de las dos, ni proporciona garantías.

type Palette = Record<string, string>;
const safe = { primary: "blue", accent: "gold" } satisfies Palette;
console.log(safe.primary);

as const es diferente

No confunda as const con una aserción de tipo. as const estrecha los tipos a literales y hace que los elementos sean de solo lectura; es seguro y suele combinarse con satisfies.

type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
console.log(xs[0]);

Resumen de riesgos

as: anula al compilador, no comprueba nada y puede ocultar errores. satisfies: coopera con el compilador, comprueba completamente y conserva la inferencia. Elija satisfies de forma predeterminada.

type Config = { level: number };
// const risky = {} as Config; // compiles, level is undefined
const safe = { level: 1 } satisfies Config;
console.log(safe.level);

Refactorizar de as a satisfies

Un buen hábito: cuando vea as SomeObjectType en un literal que controla, intente cambiarlo por satisfies y corrija los errores que aparezcan.

type Config = { url: string; retries: number };
// Before: const c = { url: "/api" } as Config;
const c = { url: "/api", retries: 3 } satisfies Config;
console.log(c.url, c.retries);

Comprobación rápida: satisfies frente a as

Compruebe que entiende la diferencia entre satisfies y as.

Resumen: satisfies frente a la aserción as

Ha aprendido que as omite las comprobaciones y puede ocultar errores, mientras que satisfies valida el valor y conserva la inferencia precisa. Prefiera satisfies para los objetos de configuración que controla.

type Config = { color: string; size: number };
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.color, c.size);

Preguntas frecuentes

¿La lección «satisfies frente a la aserción as» es gratis?

Sí — el texto completo de «satisfies frente a la aserción as» 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 «satisfies frente a la aserción as»?

Comprenda por qué satisfies es más seguro que convertir tipos con as. 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 «satisfies frente a la aserción as»?

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. Por qué existe satisfies
  2. satisfies frente a la anotación de tipos
  3. satisfies frente a la aserción as
  4. Patrones prácticos con satisfies
← Volver a TypeScript Academy