Agregar y quitar modificadores en TypeScript
Un tipo mapeado puede agregar o quitar readonly y opcional.
interface Step {
readonly idx: number;
title: string;
stars?: number;
}
type Mutable<T> = { -readonly [K in keyof T]: T[K] };
type AllOptional<T> = { [K in keyof T]+?: T[K] };
type AllRequired<T> = { [K in keyof T]-?: T[K] };
const mutable: Mutable<Step> = { idx: 0, title: "Mapped types" };
mutable.idx = 1; // permitido: se quitó el readonly
const patch: AllOptional<Step> = {};
const complete: AllRequired<Step> = { idx: 2, title: "Modifiers", stars: 3 };
console.log(mutable.idx, Object.keys(patch).length, complete.stars);
Cómo funciona
+?agrega el opcional,-?lo quita.-readonlyquita el modificador que traía la fuente.- Exactamente así están definidos Partial y Required.
Palabras clave y builtins usados aquí
AllOptionalAllRequiredMutableObjectTconstinterfacenumberreadonlystringtype
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 531
- Tokens
- 163
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 89 segundos.
Paso 3 de 3 en Tipos mapeados; paso 6 de 12 en Programación a nivel de tipos.