TypeScript 기본 : 타입 조작 (2) keyof + typeof 연산자
2024. 1. 31. 16:412. keyof 연산자
: 객체 형태의 타입에서 속성들만 뽑아 유니온 타입으로 만드는 연산자.
type과 interface 모두에 사용할 수 있다.
keyof 연산자는 객체 타입에서 객체의 키 값들을 숫자나 문자열 리터럴 유니언을 생성합니다.
type Type = {
name: string;
age: number;
married: boolean;
};
type Union = keyof Type;
type Union2 = 'name' | 'age' | 'married'
const union: Union = 'married';
타입 Type을 keyof를 이용해 유니온 타입으로 반환한 Union을 타입으로 지정하면
새로운 변수 union에 key값인 'married'를 할당할 수 있게 된다.
3. typeof 연산자
: 객체 데이터를 객체 타입으로 변환해주는 연산자
객체 데이터에 쓰인 구조를 가져와 재활용하거나 독립된 타입으로 만들고 싶을 때 사용할 수 있다.
JS에서의 typeof는 피연산자의 평가 전 자료형을 반환하는 연산자였다.
console.log(typeof 42);
// Expected output: "number"
TS에서는 이렇게 사용할 수 있다.
타입 Fruit에 typeof obj로 obj를 타입으로 변환해 담아주고, obj2에서 꺼내 재사용한다.
const obj = {
red: 'apple',
yellow: 'banana',
green: 'cucumber',
};
type Fruit = typeof obj;
let obj2: Fruit = {
red: 'pepper',
yellow: 'orange',
green: 'peanut',
};
keyof와 typeof를 함께 사용하면 객체를 => 타입으로 변환 (typeof) 한 뒤에 => 유니온 타입으로 변환 (keyof) 할수 있다.
const obj = {
red: 'apple',
yellow: 'banana',
green: 'cucumber',
};
type Color = keyof typeof obj;
// type Color = 'red'|'yellow'|'green'
keyof (typeof obj) 순서로 작성한다.
참고자료
'TypeScript' 카테고리의 다른 글
TypeScript 기본 : 조건부 타입 (0) | 2024.02.01 |
---|---|
TypeScript 기본 : 타입 조작 (3) 맵드타입 (0) | 2024.01.31 |
TypeScript 기본 : 타입 조작 (1) 인덱스드 엑세스 타입 (0) | 2024.01.30 |
TypeScript 기본 : 제네릭 함수 (1) | 2024.01.30 |
TypeScript 기본 : 함수 (3) 함수 타입의 호환성 (1) | 2024.01.27 |