Enums y la alternativa en TypeScript
Qué te da un enum, y por qué un objeto const suele ganarle.
enum Level {
Debug,
Info,
Warn,
}
const enum Inlined {
Yes = "yes",
}
const LEVELS = {
debug: "debug",
info: "info",
warn: "warn",
} as const;
type LevelName = (typeof LEVELS)[keyof typeof LEVELS];
function log(level: LevelName, message: string): string {
return `[${level}] ${message}`;
}
console.log(Level.Info, Level[1], Inlined.Yes);
console.log(log("warn", "slow"), Object.values(LEVELS));
Cómo funciona
- Un enum numérico es bidireccional y emite código real.
- Un enum de cadenas es nominal: dos cadenas idénticas no son asignables.
- Un objeto const con
as constes borrable y de tipado estructural.
Palabras clave y builtins usados aquí
LevelNameObjectasconstenumfunctionreturnstringtype
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 399
- Tokens
- 116
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 82 segundos.
Paso 4 de 4 en Primitivos y literales; paso 4 de 23 en Tipos y anotaciones.