馃敟 TYPE MANIPULATION, OPERADOR KEYOF

驴Para qu茅 sirve el operador keyof de TypeScript?

El operador keyof tomas el tipo de objeto y produce un string o union literal num茅rica de sus propiedades.

type Coordenada = { x: number; y: number };
type P = keyof Coordenada;

// = tipo P es = a keyof Coordenada ('x' | 'y')

let a: P = "x";
let b: P = "y";
let c: P = "d"; // <- aqui se presenta un error porque "d" no es parte de los keys

En el anterior ejemplo el tipo Coordenada tiene dos propiedades x y y, por lo cual keyof Coordenada equivale a 'x' | 'y'.

Si el tipo tiene un 铆ndice string o number, keyof retornar谩 estos tipos como parte de la uni贸n.

Si usamos keyof para referenciar a un Mapa entonces la uni贸n de string | number.

type Mapa = { [k: string]: boolean };
type D = keyof Mapa;
// type de D = string | number

const i: D = 12;
const j: D = "hola";

Para los arreglos esto representa solo number, por lo que utilizar un string generar谩 un error en el compilador.

type Arreglo = { [k: number]: unknown };
type B = keyof Arreglo;
// type de B = string

const x: B = 12;
const y: B = "hola"; // <- los arreglos no permiten 铆ndices tipo string