[typescript] 타입스크립트에서의 인덱스 타입 변환 방식

타입스크립트에서, 인덱스 타입 변환은 매우 편리한 기능 중 하나입니다. 이 기능을 사용하면, 객체의 속성 또는 배열의 요소를 동적으로 접근하여 타입을 추출하거나 변환할 수 있습니다.

문자열 리터럴 유니언을 활용한 타입 추출

type Person = {
  name: string;
  age: number;
  address: string;
}

type PersonKeys = keyof Person; 
// 'name' | 'age' | 'address'

위의 예시에서 PersonKeysPerson 타입의 키들을 나타내는 유니언 타입을 갖게 됩니다.

인덱스 타입 및 조건부 타입을 사용한 속성 변환

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'
};

위의 예시에서 ReadonlyPersonPerson의 모든 속성을 읽기 전용으로 변환해주는 유틸리티 타입입니다.

타입스크립트에서의 인덱스 타입 변환은 매우 강력하며 다양한 상황에서 유용하게 활용될 수 있습니다.

참고문헌: