[typescript] 타입 별칭과 인터페이스를 사용하여 유틸리티 타입 정의하기

타입스크립트(TypeScript)에서는 타입 별칭과 인터페이스를 사용하여 유틸리티 타입을 정의할 수 있습니다. 유틸리티 타입은 기존 타입을 변환하거나 새로운 타입을 생성하기 위해 사용됩니다. 이 포스트에서는 몇 가지 유틸리티 타입을 정의하고 활용하는 방법에 대해 알아보겠습니다.

타입 별칭(Type Alias)

타입 별칭은 새로운 타입을 정의하는데 사용됩니다. 기존의 타입을 특정 이름으로 지정하여 사용할 수 있도록 해줍니다. 일반적으로 복잡한 타입이나 반복적으로 사용되는 타입을 단순하게 표현할 때 유용합니다.

예를 들어, 다음과 같이 사용자의 ID와 이름을 가지고 있는 객체를 표현하는 타입을 정의할 수 있습니다.

type User = {
  id: number;
  name: string;
};

인터페이스(Interfaces)

인터페이스는 객체의 구조를 정의하는데 사용됩니다. 객체가 특정 프로퍼티를 갖도록 강제하거나 특정한 형태를 가져야 할 때 유용합니다.

예를 들어, 다음과 같이 사용자를 나타내는 인터페이스를 정의할 수 있습니다.

interface User {
  id: number;
  name: string;
}

유틸리티 타입(Utility Types)

유틸리티 타입은 이미 정의된 타입을 변환하거나 새로운 타입을 생성하기 위해 사용됩니다. 타입스크립트에서 기본 제공하는 몇 가지 유틸리티 타입이 있습니다.

Partial

Partial 유틸리티 타입은 객체의 모든 속성을 옵셔널하게 만들어주는 타입입니다. 다음은 Partial을 사용하여 User 타입의 모든 속성을 옵셔널하게 만드는 예제입니다.

type PartialUser = Partial<User>;

Readonly

Readonly 유틸리티 타입은 객체의 모든 속성을 읽기 전용으로 만들어주는 타입입니다. 다음은 Readonly를 사용하여 User 타입의 모든 속성을 읽기 전용으로 만드는 예제입니다.

type ReadonlyUser = Readonly<User>;

Pick

Pick 유틸리티 타입은 기존 타입에서 특정 속성만을 선택하여 새로운 타입을 만들어주는 타입입니다. 다음은 Pick을 사용하여 User 타입에서 name 속성만을 선택하여 새로운 타입을 만드는 예제입니다.

type UserWithName = Pick<User, 'name'>;

이 외에도 Omit, Exclude, Extract 등 다양한 유틸리티 타입이 있으며, 필요에 따라 적절히 활용할 수 있습니다.

결론

타입 별칭과 인터페이스를 사용하여 유틸리티 타입을 정의하고 활용하는 방법에 대해 알아보았습니다. 유틸리티 타입을 효과적으로 사용하면 코드를 더욱 간결하고 읽기 쉽게 만들 수 있습니다. TypeScript 공식 문서에서 제공하는 유틸리티 타입에 대해 자세히 살펴보시기를 권장합니다.

더 많은 유틸리티 타입 및 예제 코드는 TypeScript 공식 문서에서 확인하실 수 있습니다.