typestar

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

  1. +? agrega el opcional, -? lo quita.
  2. -readonly quita el modificador que traía la fuente.
  3. Exactamente así están definidos Partial y Required.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Tipos mapeados; paso 6 de 12 en Programación a nivel de tipos.

← Anterior Siguiente →