-
(TypeScript) - 인터페이스 확장개발/TypeScript 2025. 8. 25. 11:33반응형
■ 인터페이스 확장
interface Animal { name: string; color: string; } const dog:Dog = { name: '', color: '', isBark: true, }; const cat:Cat { name: '', color: '', isScratch: boolean, } const chicken:Chicken { name: '', color: '', isFly: boolean, }다음과 같이 서브타입을 정의할 때 중복된 프로퍼티가 많은 것을 확인 가능하다.
이를 해결할 수 있는 게 인터페이스 확장 기능이다.
interface Dog extends Animal { isBark: boolean; }extends(=확장하다) 를 통해 Animal 받아준다.
기존의 Animal 이 가진 모든 프로퍼티를 가질 수 있는 것이다.
이를 상속이라고도 하는데 부모 타입으로부터 자식 타입이 물려받는 것이다.
interface Dog extends Animal { isBark: boolean; }이렇게 상속 받은 인터페이스에서 다시
name: 'hello' 와 같이 스트링 리터럴 타입 프로퍼티를 재정의 할 수 있다.
그러나 무조건 다시 재정의 가능한 건 아니다.
다시 정의하려고 하는 타입이 원본 타입의 서브 타입이여만 가능하다.
여기서도 name 원본 타입이 string 이고,
서브타입이 스트링 리터럴 타입이여서 이렇게 재정의가 가능하다.
type Animal = { name: string; color: string; } interface Dog extends Animal { isBark: boolean; }또 만약 Animal 이 type 별칭이였다고 해도 확장할 수 있다.
인터페이스는 객체 타입이면 다 확장 가능하다.
- 다중확장
interface DogCat extends Dog, Cat {}const dogCat: DogCat = { name: '', color: '', isBark: true, isScratch: false, };Dog 와 Cat 둘 다 확장하도록 받을 수도 있다.
이렇게 되면 Dog 와 Cat 이 가진 모든 프로퍼티를 가질 수 있다.
반응형'개발 > TypeScript' 카테고리의 다른 글
(TypeScript) - 자바스크립트 클래스 (0) 2025.08.25 (TypeScript) - 인터페이스 선언 합치기 (0) 2025.08.25 (TypeScript) - 인터페이스 (0) 2025.08.25 (TypeScript) - 사용자 정의 타입 가드 (커스텀 타입 가드) (0) 2025.08.22 (TypeScript) - 함수 오버로딩 (0) 2025.08.22