[한입] 인터페이스 합치기

TK·2023년 12월 15일
0

[강의] 한입 시리즈

목록 보기
32/59

선언 합치기

  • 타입별칭과 달리 동일한 이름으로 중복선언 가능 → 동일한 이름으로 정의된 인터페이스들은 결국 합쳐진다. (선언합침, declaration merging)
interface Person {
  name: string;
}

interface Person {
  age: number;
}

// 오류 없음
const person: Person = {
  name: "",
  age: 27,
};
  • 똑같은 프로퍼티의 타입을 다르게 정의하면 충돌이 일어남 (동일한 타입은 오류 없음)
interface Person {
  name: string;
}

interface Person {
  name: number; // ❌오류
  age: number;
}

const person: Person = {
  name: "",
  age: 27,
};

※ 주의: "확장"의 경우는 원본의 서브타입 ※

interface Person {
  name: string;
}
// 아래의 경우 가능함
interface Developer extends Person {
  name: "hello"
}

모듈보강

  • 타입스크립트의 library (모듈)이 부실한 경우 직접 타입을 추가하고 보강할 때 사용

  • 다음과 같은 라이브러리가 있다고 가정하고 여기에 c: "hello"를 추가하고 싶다하면,

interface lib {
  a: number;
  b: number;
}

const lib = {
  a: 1,
  b: 2,
};
  • 다음과 같이 모듈 보강이 가능하다.
interface lib {
  a: number;
  b: number;
}

// 추가
interface lib {
  c: string;
}

const lib = {
  a: 1,
  b: 2,
  c: "hello",
};

더 복잡한 내용은 나중에 다룸..

profile
쉬운게 좋은 FE개발자😺

0개의 댓글