객체 형태 ⤢ Partial<T>모든 속성을 선택적으로 만든 T. type Update = Partial<User> ⤢ Required<T>모든 속성을 필수로 만든 T. type Strict = Required<Opts> ⤢ Readonly<T>모든 속성을 readonly로 만든 T. type Frozen = Readonly<User> ⤢ Pick<T, K>K의 키만 남긴 T. type Preview = Pick<User, "id" | "name"> ⤢ Omit<T, K>K의 키를 제거한 T. type SafeUser = Omit<User, "password"> ⤢ Record<K, V>키가 K이고 값이 V인 객체. type Scores = Record<string, number> 유니언 필터링 ⤢ Exclude<U, X>X에 할당 가능한 멤버를 제거한 유니언 U. type NoNull = Exclude<T, null> ⤢ Extract<U, X>U 중 X에 할당 가능한 멤버. type OnlyStr = Extract<T, string> ⤢ NonNullable<T>null과 undefined를 제거한 T. type Def = NonNullable<T> 함수 타입 ⤢ Parameters<F>함수 F의 매개변수 타입 튜플. type P = Parameters<typeof fn> ⤢ ReturnType<F>함수 F가 반환하는 타입. type R = ReturnType<typeof fn> ⤢ ConstructorParameters<F>생성자 F의 매개변수 타입 튜플. type C = ConstructorParameters<typeof Date> ⤢ InstanceType<F>생성자 F가 만들어내는 인스턴스 타입. type D = InstanceType<typeof Date> ⤢ Awaited<T>Promise가 재귀적으로 해결되는 타입. type Data = Awaited<Promise<User>> 문자열 리터럴 변환 ⤢ Uppercase<S>문자열 리터럴 S를 대문자로 변환한 것. type A = Uppercase<"abc"> // "ABC" ⤢ Lowercase<S>문자열 리터럴 S를 소문자로 변환한 것. type B = Lowercase<"ABC"> // "abc" ⤢ Capitalize<S>첫 글자를 대문자로 만든 S. type C = Capitalize<"abc"> // "Abc" ⤢ Uncapitalize<S>첫 글자를 소문자로 만든 S. type D = Uncapitalize<"Abc"> // "aBc" 관련 키워드 ⤢ keyof T객체 타입 T의 속성 키 유니언. type K = keyof User ⤢ typeof v값의 타입. 다시 적어 쓸 필요가 없다. type Config = typeof defaults ⤢ infer X조건부 타입 안에서 타입을 캡처해 재사용한다. type El<T> = T extends Array<infer I> ? I : never ⤢ T extends U ? X : YT가 U에 할당 가능한지에 따라 X 또는 Y를 고른다. type IsStr<T> = T extends string ? true : false