satisfies en TypeScript
Verificar un valor contra un tipo sin ensancharlo a ese tipo.
type ThemeConfig = Record<string, { bg: string; dark: boolean }>;
const annotated: ThemeConfig = {
monokai: { bg: "#272822", dark: true },
};
const checked = {
monokai: { bg: "#272822", dark: true },
paper: { bg: "#ffffff", dark: false },
} satisfies ThemeConfig;
// annotated.monokai se verifica, pero las claves se ensanchan a string
const anyKey: string = Object.keys(annotated)[0]!;
// checked conserva sus claves exactas y los tipos de sus valores
type ThemeName = keyof typeof checked;
const name: ThemeName = "paper";
const isDark: false = checked.paper.dark;
console.log(anyKey, name, isDark);
Cómo funciona
- Una anotación ensancha;
satisfiesconserva los tipos literales. - Así obtienes el chequeo y también las claves precisas.
- Es la herramienta correcta para un objeto de configuración.
Palabras clave y builtins usados aquí
ObjectThemeConfigThemeNamebooleanconstfalsestringtruetype
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 606
- Tokens
- 124
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 74 segundos.
Paso 1 de 2 en satisfies y strict; paso 21 de 23 en Tipos y anotaciones.