타입스크립트(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 공식 문서에서 확인하실 수 있습니다.