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

이처럼 타입스크립트는 강력한 고급 타입 시스템을 가지고 있으며, 이를 활용하여 보다 안전하고 효율적인 코드를 작성할 수 있다.

더 많은 정보를 원하시거나 심층적인 학습을 원하신다면, 공식 타입스크립트 문서를 참조하시기 바랍니다.