keyof y acceso indexado en TypeScript
Los dos operadores con los que se construye todo helper genérico.
interface Run {
lang: string;
tpm: number;
stars: 1 | 2 | 3;
}
type RunKey = keyof Run;
type RunValue = Run[keyof Run];
type Stars = Run["stars"];
function get<T, K extends keyof T>(source: T, key: K): T[K] {
return source[key];
}
function pluck<T, K extends keyof T>(rows: T[], key: K): T[K][] {
return rows.map((row) => row[key]);
}
const run: Run = { lang: "ts", tpm: 98, stars: 3 };
const key: RunKey = "tpm";
const value: RunValue = get(run, key);
console.log(value, pluck([run, run], "lang"));
Cómo funciona
keyof Tes la unión de las claves de T.T[K]es el tipo de esa propiedad.T[keyof T]es la unión de todos los tipos de los valores.
Palabras clave y builtins usados aquí
KRunRunKeyRunValueTconstextendsfunctioninterfacenumberreturnstringtype
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 503
- Tokens
- 176
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 106 segundos.
Paso 1 de 4 en Leer tipos; paso 5 de 20 en Genéricos.