Omit<T, K>는 기존 타입(T)에서 특정 속성(K)을 제외한 새로운 타입을 만들 때 사용한다.
Omit은 TypeScript에 기본 내장되어 있으며, 실제로는 Mapped Types와 keyof, Exclude, Pick을 조합해서 동작한다.
interface User {
id: number;
name: string;
email: string;
password: string;
}
// password 필드를 제외한 User 타입
type UserWithoutPassword = Omit<User, 'password'>;
const user: UserWithoutPassword = {
id: 1,
name: "홍길동",
email: "hong@test.com"
// password는 넣을 수 없음!
};
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
interface Post {
id: number;
title: string;
content: string;
authorId: number;
createdAt: Date;
}
// id와 createdAt을 제외
type PostInput = Omit<Post, 'id' | 'createdAt'>;
const newPost: PostInput = {
title: "제목",
content: "내용",
authorId: 123
// id, createdAt은 사용 불가
};
function sendUser(user: Omit<User, 'password'>) {
// password 필드 없이 user 정보 전달
}
유틸리티역할
Pick<T, K> | T에서 K에 해당하는 속성만 선택 |
Omit<T, K> | T에서 K에 해당하는 속성을 제외 |
Partial | T의 모든 속성을 선택적(Optional)로 |
Required | T의 모든 속성을 필수로 |
type UserForm = Omit<Partial<User>, 'id' | 'password'>;
// User의 모든 필드를 Optional로 바꾸고, id와 password를 제외
TypeScript 타입 조합/확장 문법 정리 (0) | 2025.06.22 |
---|