2024년 2월 27일 작성

TypeScript Advanced Type - Type 관리를 위한 고급 기능들

TypeScript의 고급 type system은 Generic type, Utility type, Conditional type, Mapped type 등을 통해 code의 재사용성, 유지 보수성, type 안전성을 향상시키는 도구를 제공합니다.

고급 Type : TypeScript의 고급 Type System

  • TypeScript의 고급 type system은 code의 재사용성, 유지 보수성, 그리고 type 안전성을 향상시키는 다양한 기능을 제공합니다.
  • 고급 type에는 generic type, utility type, conditional type, mapped type이 포함됩니다.
  • 각각의 type은 TypeScript에서 보다 복잡한 type 관계를 표현하고 다루기 위한 강력한 도구를 제공합니다.

Generic Type

  • generic type은 type을 parameter처럼 사용하여, 다양한 type에 대해 작동할 수 있는 component(함수, class, interface 등)를 생성할 수 있게 해줍니다.
  • 이를 통해 code의 재사용성을 높이며, type 안전성을 유지할 수 있습니다.
function identity<T>(arg: T): T {
    return arg;
}
  • identity 함수는 어떤 type의 값이든 받아 동일한 type의 값을 반환합니다.
  • generic을 사용함으로써, 이 함수는 다양한 type에 대해 유연하게 사용될 수 있습니다.

Utility Type

  • TypeScript는 기존 type을 변환하여 새로운 type을 생성하는 데 도움을 주는 여러 내장(built-in) utility type을 제공합니다.
  • 이는 code의 중복을 줄이고, type 변환의 편의성을 향상시킵니다.
type PartialPoint = Partial<{ x: number; y: number }>;
  • Partial utility type은 모든 property를 선택적으로 만듭니다.
  • PartialPoint type은 xy property가 모두 선택적인 새로운 type입니다.

Conditional Type

  • conditional(조건부) type은 type의 조건부 logic을 표현할 수 있게 해주며, 입력된 type에 따라 다른 type을 반환할 수 있습니다.
type IsNumber<T> = T extends number ? "yes" : "no";
  • IsNumber type은 Tnumber type에 할당 가능한 경우 “yes” type을, 그렇지 않은 경우 “no” type을 반환합니다.

Mapped Type

  • mapped type은 기존 type의 property를 반복하여 새로운 type을 생성하거나 변형할 수 있게 해줍니다.
type ReadonlyPoint = Readonly<{ x: number; y: number }>;
  • Readonly mapped type은 모든 property를 읽기 전용(readonly)으로 만듭니다.
  • ReadonlyPoint type은 xy가 읽기 전용인 새로운 type입니다.

목차