[Typescript] “keyof”, Generics and Lookup Types
const person = { name: "wan", age: 28 } type Person = typeof person type PersonKeys = keyof person // "name" | "age" type PersonKTypes = Person[PersonKeys] // string | number
"keyof" results in a unit type.
"extends" means a subtype of certain type.
It is common to combine those keywords together:
K extends keyof T
We can use "keyof" (a unit type) to build a lookup:
function getProperty<T, K extends keyof T>(obj: T ,key: K): T[K] { return obj[key] } const personName = getProperty(person, 'name')
'name' extends keyof Person
'name' extends "name" | "age" -> true statement