타입 연산자
keyof
타입의 모든 키를 유니온 타입으로 반환하는 타입 연산자, 보통 객체 타입의 속성 이름을 추출할 때 유용하다.
type Person = {
name: string;
age: number;
isStudent: boolean;
}
type Keys = keyof Person;
// Keys = "name" | "age" | "isStudent"
type-challenge에서 readonly 등을 구현할 때 사용했다
type MyReadOnly<T> = {
readonly [P in keyof T]: T[P]
}
type DeepReadonly<T> = {
readonly [P in keyof T]: T[P] extends object
? T[P] extends Function
? T[P]
: DeepReadonly<T[P]> // recursive
: T[P]
}