TypeScript 유틸리티 유형을 만들고 사용하는 방법

TypeScript는 기존 유형을 변환하고 관리하는 것을 더 쉽게 해주는 유틸리티 유형 세트를 제공합니다. 이러한 내장 유틸리티 유형을 사용하면 개발자가 다양한 방식으로 유형을 조작하여 코드를 단순화하고 반복을 피하는 데 도움이 됩니다. 이 가이드에서는 가장 일반적인 유틸리티 유형 중 일부와 TypeScript 프로젝트에서 이를 만들고 사용하는 방법을 살펴봅니다.

TypeScript 유틸리티 유형이란?

TypeScript의 유틸리티 유형은 다른 유형을 변환하는 데 도움이 되는 미리 정의된 유형입니다. 속성을 선택, 생략 또는 수정하여 기존 유형을 기반으로 새 유형을 만드는 데 사용할 수 있습니다. 깨끗하고 재사용 가능한 코드를 유지하는 데 필수적인 역할을 합니다.

일반적으로 사용되는 TypeScript 유틸리티 유형

가장 일반적으로 사용되는 TypeScript 유틸리티 유형은 다음과 같습니다.

  • Partial<T>T 유형의 모든 속성을 선택 사항으로 만듭니다.
  • 필수<T>T 유형의 모든 속성을 필수로 만듭니다.
  • Readonly<T>T 유형의 모든 속성을 읽기 전용으로 만듭니다.
  • Pick<T, K>T 유형에서 K 속성 세트를 선택합니다.
  • Omit<T, K>T 유형에서 K 속성 집합을 제거합니다.
  • Record<K, T>K 유형의 키와 T 유형의 값을 갖는 객체 유형을 구성합니다.

예: 부분 사용<T>

Partial 유틸리티 유형은 인터페이스의 모든 속성을 선택 사항으로 만듭니다. 다음은 사용 방법입니다.

interface User {
  name: string;
  age: number;
  email: string;
}

const updateUser = (user: Partial<User>) => {
  // Update logic
};

updateUser({ name: "John" });

이 예에서 updateUserPartial<User> 유형의 인수를 허용합니다. 즉, User 인터페이스의 일부 속성만 필요합니다.

예: Pick 사용<T, K>

Pick 유틸리티 유형을 사용하면 유형에서 속성 하위 집합을 선택할 수 있습니다.

interface User {
  name: string;
  age: number;
  email: string;
}

type UserContactInfo = Pick<User, "name" | "email">;

const contactInfo: UserContactInfo = {
  name: "John",
  email: "[email protected]"
};

여기서 Pick<User, “name” | “email”>는 원래 User 인터페이스의 nameemail 속성만 사용하여 새로운 유형 UserContactInfo를 생성합니다.

예: Omit 사용<T, K>

Omit 유틸리티 유형은 유형에서 지정된 속성을 제거합니다.

interface User {
  name: string;
  age: number;
  email: string;
}

type UserWithoutEmail = Omit<User, "email">;

const user: UserWithoutEmail = {
  name: "John",
  age: 30
};

이 예에서 UserWithoutEmail 유형은 User 인터페이스에서 email 속성을 생략하여 생성됩니다.

사용자 정의 유틸리티 유형 생성

사용자 정의 유틸리티 유형은 조건 유형, 매핑된 유형 등과 같은 TypeScript의 고급 유형 기능을 사용하여 만들 수도 있습니다. 다음은 모든 속성을 선택 사항으로 만드는 사용자 정의 유틸리티 유형의 간단한 예입니다.

type MyPartial<T> = {
  [P in keyof T]?: T[P];
};

interface User {
  name: string;
  age: number;
  email: string;
}

const user: MyPartial<User> = {
  name: "Alice"
};

이 사용자 정의 MyPartial 유형은 TypeScript의 내장 Partial 유틸리티 유형과 유사하게 작동합니다.

결론

TypeScript 유틸리티 유형은 유연하고 재사용 가능한 방식으로 유형을 다루는 데 필수적인 기능입니다. 이러한 유틸리티 유형을 활용하면 코드를 더 간결하고 유지 관리하기 쉽게 만들 수 있습니다. Partial, Pick, Omit와 같은 기본 제공 유틸리티 유형을 사용하든 사용자 지정 유형을 만들든 TypeScript의 유형 시스템을 크게 향상시킵니다.