[typescript] 타입 별칭과 인터페이스를 사용하여 인덱스 가능 객체 타입 정의하기
TypeScript에서는 타입 시스템을 강력하게 지원하며, 다양한 방법으로 사용자 정의 타입을 정의할 수 있습니다. 이번 포스트에서는 타입 별칭과 인터페이스를 사용하여 인덱싱 가능 객체 타입을 정의하는 방법에 대해 살펴보겠습니다.
1. 타입 별칭(Type Alias)
타입 별칭은 새로운 타입의 이름을 지정할 수 있는 기능입니다. 예를 들어, 다음과 같이 Person
타입 별칭을 정의할 수 있습니다.
type Person = {
name: string;
age: number;
}
2. 인터페이스(Interface)
인터페이스는 객체의 구조를 정의하는 목적으로 사용됩니다. 아래의 예시와 같이 IPerson
인터페이스를 정의할 수 있습니다.
interface IPerson {
name: string;
age: number;
}
3. 인덱싱 가능 객체 타입(Indexable Types)
인덱싱 가능 객체 타입은 문자열 또는 숫자로 인덱싱하여 멤버에 접근할 수 있는 객체를 의미합니다. 이를 위해 다음과 같이 인덱스 시그니처(Index Signature)를 사용하여 타입을 정의할 수 있습니다.
3.1 타입 별칭을 사용한 인덱싱 가능 객체 타입
type Dictionary<T> = {
[key: string]: T;
};
3.2 인터페이스를 사용한 인덱싱 가능 객체 타입
interface IDictionary<T> {
[key: string]: T;
}
이제, 위에서 정의한 Dictionary
타입 별칭 또는 IDictionary
인터페이스를 사용하여 문자열로 인덱싱 가능한 객체 타입을 만들 수 있습니다.
const myDict: Dictionary<number> = {
"one": 1,
"two": 2
};
// 또는
const yourDict: IDictionary<string> = {
"apple": "사과",
"banana": "바나나"
};
결론
타입 별칭과 인터페이스를 활용하여 인덱싱 가능 객체 타입을 정의할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있으며, 타입 시스템의 장점을 최대한 활용할 수 있습니다.
참고문헌: TypeScript 공식 문서 - 인덱싱 가능 타입(Indexable Types)