TypeScript
[TS] TypeScript 유틸리티 타입이란?
dev_sihyun
2025. 3. 18. 10:21
반응형
TypeScript 유틸리티 타입
TypeScript의 유틸리티 타입은 기존 타입을 변환하여 새로운 타입을 생성하는 도구입니다. 이를 통해 코드 재사용성을 높이고 타입 정의를 간결하게 할 수 있습니다.
주요 유틸리티 타입
1. Partial<T>
- 타입 T의 모든 속성을 선택적(optional)으로 만듭니다.
interface User { id: number; name: string; }
type PartialUser = Partial<User>; // { id?: number; name?: string; }
2. Required<T>
Partial
의 반대로, 모든 선택적 속성을 필수로 만듭니다.
interface Config { debug?: boolean; mode?: string; }
type RequiredConfig = Required<Config>; // { debug: boolean; mode: string; }
3. Readonly<T>
- 모든 속성을 읽기 전용으로 만듭니다.
interface Todo { title: string; }
type ReadonlyTodo = Readonly<Todo>; // { readonly title: string; }
4. Record<K, T>
- 키 타입 K, 값 타입 T로 객체 타입을 생성합니다.
type PageInfo = Record<string, number>; // { [key: string]: number }
5. Pick<T, K>
- T에서 K로 지정된 속성만 선택합니다.
interface User { id: number; name: string; email: string; }
type UserBasic = Pick<User, 'id' | 'name'>; // { id: number; name: string; }
6. Omit<T, K>
- T에서 K로 지정된 속성을 제외합니다.
interface User { id: number; name: string; email: string; }
type UserWithoutEmail = Omit<User, 'email'>; // { id: number; name: string; }
7. Exclude<T, U>
- T에서 U에 할당할 수 있는 타입을 제외합니다.
type T = string | number | boolean;
type NonBoolean = Exclude<T, boolean>; // string | number
8. Extract<T, U>
- T에서 U에 할당할 수 있는 타입만 추출합니다.
type T = string | number | boolean;
type StringOrNumber = Extract<T, string | number>; // string | number
9. NonNullable<T>
- T에서 null과 undefined를 제외합니다.
type T = string | null | undefined;
type NonNullString = NonNullable<T>; // string
10. ReturnType<T>
- 함수 타입 T의 반환 타입을 추출합니다.
function greet() { return "Hello"; }
type GreetReturn = ReturnType<typeof greet>; // string
11. Parameters<T>
- 함수 타입 T의 매개변수 타입을 추출합니다.
function greet(name: string, age: number) { return `${name}, ${age}`; }
type GreetParams = Parameters<typeof greet>; // [string, number]
12. InstanceType<T>
- 생성자 함수 타입 T의 인스턴스 타입을 추출합니다.
class Person { name: string; }
type PersonInstance = InstanceType<typeof Person>; // Person
13. ThisParameterType<T>
- 함수 타입 T의 this 매개변수 타입을 추출합니다.
14. OmitThisParameter<T>
- 함수 타입 T에서 this 매개변수를 제거합니다.
15. Uppercase<S>
, Lowercase<S>
, Capitalize<S>
, Uncapitalize<S>
- 문자열 리터럴 타입을 변환합니다.
type UppercaseHello = Uppercase<'hello'>; // "HELLO"
이러한 유틸리티 타입들을 조합하여 복잡한 타입을 간결하게 표현할 수 있으며, 코드의 타입 안전성과 유지보수성을 크게 높일 수 있습니다.
반응형