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 }는 기존 타입에 임시 속성을 추가할 때 유용합니다.

  • 두 방식 모두 타입 안전성을 유지하면서 특정 상황에 맞는 타입을 쉽게 만들 수 있습니다.