[typescript] 타입스크립트에서 제공하는 고급 타입에는 어떤 것들이 있나요?

목차

  1. 제네릭(Generic)
  2. 조건부 타입(Conditional Types)
  3. 유니언 타입(Union Types)과 인터섹션 타입(Intersection Types)

제네릭

타입스크립트에서 제네릭(Generic)은 타입이 동적인 상황에서 여러 종류의 데이터를 다룰 수 있는 강력한 도구입니다. 함수나 클래스를 선언할 때, 실제 타입을 나중에 지정하여 재사용성을 높일 수 있습니다.

function identity<T>(arg: T): T {
    return arg;
}

let output = identity<string>("hello"); // output의 타입은 string

조건부 타입

조건부 타입(Conditional Types)은 입력된 제네릭 타입에 따라 결과 타입이 달라지도록 하는 기능입니다. 조건부 타입은 infer 키워드를 사용하여 타입 매개변수를 추론할 수 있습니다.

type TypeName<T> =
  T extends string ? "string" :
  T extends number ? "number" :
  T extends boolean ? "boolean" :
  "object";
  
type StringOrNumber = TypeName<string | number>; // "string" | "number"

유니언 타입과 인터섹션 타입

유니언 타입(Union Types)| 연산자를 사용하여 여러 타입 중 하나일 수 있는 경우를 나타내고, 인터섹션 타입(Intersection Types)& 연산자를 사용하여 여러 타입을 모두 포함하는 새로운 타입을 생성할 수 있습니다.

type StringOrNumber = string | number;
type Employee = { name: string } & { jobTitle: string };

let value: StringOrNumber = "text";
let employee: Employee = { name: "John", jobTitle: "Developer" };

타입스크립트의 고급 타입 기능을 활용하면 좀 더 유연하고 안전한 코드를 작성할 수 있습니다.

참고 자료