[typescript] 타입스크립트에서의 인덱스 타입 변환 방식
타입스크립트에서, 인덱스 타입 변환은 매우 편리한 기능 중 하나입니다. 이 기능을 사용하면, 객체의 속성 또는 배열의 요소를 동적으로 접근하여 타입을 추출하거나 변환할 수 있습니다.
문자열 리터럴 유니언을 활용한 타입 추출
type Person = {
name: string;
age: number;
address: string;
}
type PersonKeys = keyof Person;
// 'name' | 'age' | 'address'
위의 예시에서 PersonKeys
는 Person
타입의 키들을 나타내는 유니언 타입을 갖게 됩니다.
인덱스 타입 및 조건부 타입을 사용한 속성 변환
type Person = {
name: string;
age: number;
address: string;
}
type MakeOptional<T, K extends keyof T> = {
[P in K]?: T[P];
};
type PartialPerson = MakeOptional<Person, 'address'>;
// { name?: string; age?: number; address?: string; }
위의 예시에서 MakeOptional
은 특정 속성을 선택적으로 변환해주는 유틸리티 타입입니다.
맵드 타입을 통한 인덱스 타입 변환
type Person = {
name: string;
age: number;
address: string;
}
type ReadonlyPerson = {
readonly [P in keyof Person]: Person[P];
};
const person: ReadonlyPerson = {
name: 'John',
age: 30,
address: '123 Street'
};
위의 예시에서 ReadonlyPerson
은 Person
의 모든 속성을 읽기 전용으로 변환해주는 유틸리티 타입입니다.
타입스크립트에서의 인덱스 타입 변환은 매우 강력하며 다양한 상황에서 유용하게 활용될 수 있습니다.
참고문헌: