Skip to content

Latest commit

 

History

History
79 lines (57 loc) · 1.31 KB

File metadata and controls

79 lines (57 loc) · 1.31 KB

2. 인터페이스 선언 합치기

선언 합침


타입 별칭은 동일한 스코프 내에 중복된 이름으로 선언할 수 없는 반면 인페이스를 가능함

type Person = {
  name: string;
};

type Person = { 
  age: number;
};
interface Person {
  name: string;
}

interface Person { // ✅
  age: number;
}

→ 중복된 이름의 인터페이스 선언은 결국 모두 하나로 합쳐지기 때문


따라서 위 코드에서 선언한 Person 인터페이스들을 결국 합쳐져 다음과 같은 인터페이스가 됨

interface Person {
	name: string;
	age: number;
}

이렇게 동일한 이름의 인터페이스들이 합쳐지는 것을 선언 합침이라고 부름. 따라서 다음과 같이 사용할 수 있음

interface Person {
  name: string;
}

interface Person {
  age: number;
}

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

주의할 점

동일한 이름의 인터페이스들이 동일한 이름의 프로퍼티를 서로 다른 타입으로 정의하면 오류

interface Person {
  name: string;
}

interface Person {
  name: number;
  age: number;
}

→ 이러한 상황을 “충돌”이라고 표현

→ 선언 합침에서 이러한 충돌은 허용되지 않음