속성의 키와 값의 타입이 궁금할 수도 있습니다.
const obj = {
hello: 'world',
name: 'zero',
age: 28,
}
이러한 객체가 있다면 키의 타입은 'hello' | 'name' | 'age'이고, 값의 타입은 string | number입니다. 값의 타입이 'world' | 'zero' | 28이 아닌 이유는 obj 객체가 변경 가능하기 때문입니다. 만약 뒤에 as const가 붙었다면 'world' | 'zero' | 28이었겠죠.
이때는 keyof 연산자와 인덱스 접근 타입을 활용해 키의 타입과 값의 타입을 구할 수 있습니다. 키의 타입은 'keyof 객체_타입'이고, 값의 타입은 '객체_타입[키의_타입]'입니다.
const obj = {
hello: 'world',
name: 'zero',
age: 28,
};
type Keys = keyof typeof obj;
// type Keys = 'hello' | 'name' | 'age'
type Values = typeof obj[Keys];
// type Values = string | number