javascript
타입스크립트 Omit
1. Omit
Omit은 객체 타입이나 인터페이스에서 특정 키를 제거한 새로운 타입을 만들 때 사용합니다.
예를 들어, 객체의 day 속성은 원래 필수지만, 특정 상황에서는 day를 제외하고 타입을 사용하고 싶을 때가 있습니다.
// 원본 인터페이스
interface PatternsResponse {
day: number;
patterns: PatternItem[];
}
// 컴포넌트 파일
// props로 객체를 전달하되, "day"만 제외한 타입을 사용하고 싶을 때
export default function PatternList({ patterns }: Omit<PatternListProps, "day">) {
...
// 함수 내부에서 patterns 변수는 PatternListProps 타입이지만 "day" 속성은 없음
// 실제 타입 구조는 아래와 같음
// interface PatternsResponse {
// patterns: PatternItem[];
// }
}
2. 특정 경우에만 키와 값을 추가하려면
타입에 임시로 새로운 키를 추가하고 싶을 때는 타입 & { 추가할 키: 타입 } 형태를 사용합니다.
// 원본 인터페이스
interface PatternsResponse {
day: number;
patterns: PatternItem[];
}
// 컴포넌트 파일
// props로 객체를 전달하되, "allCnt"라는 값만 추가하고 싶을 때
export default function PatternList({ patterns }: PatternListProps & { allCnt: number }) {
...
// 함수 내부에서 patterns 변수는 PatternsResponse 타입에 해당하며,
// allCnt 속성만 임시로 추가된 상태
// 실제 타입 구조는 아래와 같음
// interface PatternsResponse {
// patterns: PatternItem[];
// day: number;
// allCnt: number;
// }
}
💡 Tip:
-
Omit은 기존 타입에서 일부 속성을 제거할 때 유용합니다. -
& { newKey: type }는 기존 타입에 임시 속성을 추가할 때 유용합니다. -
두 방식 모두 타입 안전성을 유지하면서 특정 상황에 맞는 타입을 쉽게 만들 수 있습니다.