레슨 8 / 8·15분
TypeScript 레퍼런스
유틸리티 타입 모음
typescript
// ─── 객체 변환 ───
Partial<T> // 모든 속성을 선택적으로
Required<T> // 모든 속성을 필수로
Readonly<T> // 모든 속성을 readonly로
// ─── 속성 선택/제외 ───
Pick<T, K> // K에 해당하는 속성만 선택
Omit<T, K> // K에 해당하는 속성을 제외
// ─── 함수 관련 ───
ReturnType<F> // 함수의 반환 타입 추출
Parameters<F> // 함수의 매개변수 타입 (튜플)
ConstructorParameters<C> // 생성자 매개변수 타입
// ─── 매핑 ───
Record<K, V> // 키 K, 값 V인 객체 타입
// Record<string, number> = { [k: string]: number }
// ─── Union 조작 ───
Exclude<T, U> // T에서 U에 해당하는 타입 제거
Extract<T, U> // T에서 U에 해당하는 타입만 추출
NonNullable<T> // null, undefined 제거
// ─── 문자열 변환 ───
Uppercase<S> // 대문자로
Lowercase<S> // 소문자로
Capitalize<S> // 첫 글자 대문자
Uncapitalize<S> // 첫 글자 소문자
// ─── 인스턴스 ───
InstanceType<C> // 클래스의 인스턴스 타입
ThisParameterType<F> // this 매개변수 타입타입 가드 패턴 정리
typescript
// typeof — 원시 타입 체크
if (typeof x === "string") { /* string */ }
if (typeof x === "number") { /* number */ }
// instanceof — 클래스 인스턴스 체크
if (x instanceof Date) { /* Date */ }
if (x instanceof Error) { /* Error */ }
// in — 속성 존재 체크
if ("swim" in animal) { /* { swim: ... } */ }
// 사용자 정의 타입 가드 (is)
function isUser(v: unknown): v is User {
return typeof v === "object" && v !== null && "id" in v;
}
// Discriminated Union — kind/type 필드로 구분
switch (action.type) {
case "add": /* AddAction */ break;
case "remove": /* RemoveAction */ break;
}
// as const — 리터럴 타입 보존
const config = { port: 3000, host: "localhost" } as const;
// { readonly port: 3000; readonly host: "localhost" }자주 쓰는 패턴
- •
as const— 객체/배열을 리터럴 타입으로 고정 - •
satisfies T— 타입을 체크하되 추론은 유지 - •
keyof T— 객체의 키를 유니온 타입으로 - •
T[K]— 인덱스 접근 타입 (Lookup Type) - •
typeof x— 값에서 타입을 추출 - •
T extends U ? X : Y— 조건부 타입 - •
infer R— 조건부 타입 내 타입 추론 - •
[K in keyof T]— Mapped Type (속성 순회) - •
!(non-null assertion) — null이 아님을 단언 (주의해서 사용) - •
unknown— any보다 안전한 최상위 타입 (타입 가드 필요)
💡
TypeScript 공식 Playground(typescriptlang.org/play)에서 타입을 실험해 볼 수 있습니다. 에디터 위에 마우스를 올리면 추론된 타입을 바로 확인할 수 있어 학습에 매우 유용합니다.