typestar

Leer tipos desde los valores en TypeScript

typeof eleva el tipo de un valor; ReturnType e InstanceType van más allá.

const defaults = {
  theme: "default",
  seconds: 60,
  langs: ["ts", "go"],
};

type Defaults = typeof defaults;
type LangList = Defaults["langs"];

class Session {
  constructor(public lang: string) {}
  best(): number {
    return 104;
  }
}

type SessionType = InstanceType<typeof Session>;
type BestReturn = ReturnType<Session["best"]>;

function configure(overrides: Partial<Defaults>): Defaults {
  return { ...defaults, ...overrides };
}

const session: SessionType = new Session("ts");
const best: BestReturn = session.best();
const langs: LangList = ["ts"];
console.log(configure({ seconds: 300 }).seconds, best, langs.length);

Cómo funciona

  1. typeof value en posición de tipo es el tipo del valor.
  2. InstanceType<typeof Class> es lo que produce new.
  3. Así se mantiene una sola fuente de verdad: el valor.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
27
Caracteres a escribir
619
Tokens
155
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 93 segundos.

Escribe este fragmento

Paso 2 de 4 en Leer tipos; paso 6 de 20 en Genéricos.

← Anterior Siguiente →