인터페이스 확장하기

woodstock·2024년 1월 28일
0
post-thumbnail

인터페이스 확장

인터페이스 확장이란 하나의 인터페이스를 다른 인터페이스들이 상속받아 중복된 프로퍼티를 정의하지 않도록 도와주는 문법이다.

interface 타입이름 evtends 확장_할_타입이름 형태로 사용하며, extends 뒤에 확장할 타입의 이름을 정의하면 해당 타입에 정의된 모든 프로퍼티를 다 가지고 오게 된다.

그리고, 이때 확장 대상 타입인 AnimalDog 타입의 슈퍼타입이 된다.

프로퍼티 재 정의하기

다음과 같이 확장과 동시에 프로퍼티의 타입을 재정의하는 것 또한 가능하다.

interface Animal {
  name: string;
  color: string;
}

interface Dog extends Animal {
  name: "wawa"; // 타입 재 정의
  breed: string;
}

주의할 점은 프로퍼티를 재 정의할 때 원본 타입을 A, 재정의된 타입을 B라고 하면 반드시 AB의 슈퍼타입이 되도록 재정의해야 한다.

따라서, 다음과 같이 nameNumber 타입으로 재정의하는 것은 불가능하다.

Dog 타입이 Animal 탕비을 확장한다는 것은 Animal 타입의 서브타입이 된다는 의미이다. 그런데 name 프로퍼티를 Number 타입으로 재정의하면 더이상 DogAnimal 타입의 서브타입이 아니게 된다. 따라서 이런 재정의는 불가능한 것이다.


타입 별칭을 확장하기

인터페이스는 인터페이스 뿐만 아니라 타입 별칭으로 정의된 객체도 확장할 수 있다.


다중 확장

다음과 같이 여러개의 인터페이스를 확장할수도 있다.

profile
해내는 사람

0개의 댓글