더북(TheBook)

속성의 키와 값의 타입이 궁금할 수도 있습니다.

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.