[TypeScript] Indexed Access Types 및 Mapped Types

이번 글에서는 TypeScript의 타입 시스템을 크게 향상시키는 두 가지 강력한 기능을 살펴보는 여정을 시작합니다.

Indexed Access Types

조회 타입이라고도 하는 인덱싱된 액세스 타입을 사용하면 키를 기반으로 객체에서 프로퍼티 타입을 조회할 수 있습니다. 이 구문은 대괄호 안에 키 타입이 들어 있는 대괄호를 사용합니다.

1
2
3
4
5
6
7
type Person = {
name: string;
age: number;
city: string;
};

type AgeType = Person['age']; // number

이 예제에서 Person['age']Person 타입에서 ‘age’ 속성의 타입을 검색합니다.

Mapped Types

1
2
3
4
5
6
7
8
9
10
type Flags = {
option1: boolean;
option2: boolean;
};

type NullableFlags = {
[K in keyof Flags]: boolean | null;
};

// Result: { option1: boolean | null, option2: boolean | null }

여기서 NullableFlagsFlags의 각 프로퍼티를 null을 허용하도록 변환합니다.

Share