[typescript] 타입스크립트에서 고급 타입 시스템의 활용
타입스크립트(TypeScript)는 JavaScript의 확장된 기능을 제공하므로써, 정적 타입 시스템을 가지고 있다. 이 강력한 타입 시스템을 활용하여 많은 고급 타입을 정의하고 사용할 수 있다. 이 글에서는 타입스크립트에서 고급 타입 시스템을 어떻게 활용할 수 있는지 살펴보겠다.
1. 제네릭(Generic) 타입
제네릭은 타입 안전성을 높이고 중복 코드를 줄일 수 있는 강력한 도구이다. 예를 들어, 배열의 원소를 추출하는 함수를 작성할 때, 다음과 같이 제네릭을 이용해 함수를 정의할 수 있다.
function getArrayItem<T>(arr: T[], index: number): T {
return arr[index];
}
2. 조건부 타입(Conditional Type)
조건부 타입을 사용하면 입력된 타입에 따라 두 가지 중 하나의 타입을 선택할 수 있다. 다음은 조건부 타입을 사용하여 null
또는 undefined
를 제거하는 예시이다.
type NonNullable<T> = T extends null | undefined ? never : T;
3. 불변성(Immutability)을 위한 타입
객체의 불변성을 보장하기 위해 타입스크립트는 readonly
키워드를 제공한다. 다음은 readonly
를 이용한 불변성을 제공하는 예시이다.
interface Point {
readonly x: number;
readonly y: number;
}
4. 유니언 타입과 교차 타입
유니언 타입과 교차 타입은 타입 시스템에서 유연한 조합을 가능하게 한다. 예를 들어 |
와 &
를 사용하여 유니언 타입과 교차 타입을 정의할 수 있다.
type StringOrNumber = string | number;
type Point2D = { x: number } & { y: number };
이처럼 타입스크립트는 강력한 고급 타입 시스템을 가지고 있으며, 이를 활용하여 보다 안전하고 효율적인 코드를 작성할 수 있다.
더 많은 정보를 원하시거나 심층적인 학습을 원하신다면, 공식 타입스크립트 문서를 참조하시기 바랍니다.