인덱스드 엑세스 타입(Indexed Access Types)
은 인덱스[]
를 사용해서 객체, 배열, 튜플의 특정 프로퍼티 타입을 추출하는 타입입니다.
인덱스로 객체의 프로퍼티 명을 사용하면 간단하게 객체 타입에 접근할 수 있습니다.
type Member = {
id: number,
name: string,
};
type Id = Member['id']; //type Id = number;
type Name = Member['name']; //type Name = string;
type Union = Member['id' | 'name']; //type Union = number | string;
배열에서는 typeof
연산자와 함께 사용하면 배열 요소의 타입을 가져올 수 있습니다. 이때는 number
타입을 이용해서 배열 요소 타입을 가져오게 됩니다.
let arr = [
{id: 1, name: 'Kim'},
{id: 2, name: 'Lee'},
{id: 3, name: 'Park'}
];
type Id = typeof arr[number]['id']; //type Id = number;
type Name = typeof arr[number]['name'] //type Name = string;
type Arr = typeof arr[number]; //type Arr = {id: number, name: string};
튜플도 배열과 비슷한 방식으로 인덱스를 통해 튜플 요소 타입에 접근합니다.
type Tuple = [number, string];
type T1 = Tuple[0]; //type T1 = number;
type T2 = Tuple[1]; //type T2 = string;
type T3 = Tuple[number]; //type T3 = number | string;