TypeScript에서 타입을 확장(상속)하는 방법은 interface extends와 type & type(교차 타입)을 사용하는 것입니다. 또한 인터페이스는 타입을 확장할 수 있고, 그 반대도 가능합니다.
인터페이스는 속성을 상속하기 위해 extends 키워드를 사용합니다:
interface Animal { name: string; } interface Bird extends Animal { wings: number; }
타입은 &를 통해 결합될 수 있습니다:
type Animal = { name: string }; type Bird = Animal & { wings: number };
또한, 인터페이스는 다른 타입을 확장할 수 있습니다:
type Base = { id: number }; interface Derived extends Base { description: string; }
특징:
타입(type)은 인터페이스를 통해 확장하거나 그 반대가 가능한가요? 대부분의 사람들이 저지르는 실수는 무엇인가요?
많은 사람들은 인터페이스는 인터페이스를 통해서만 확장할 수 있다고 생각하지만, 실제로는 인터페이스가 타입을 확장할 수 있습니다:
type Basic = { flag: boolean }; interface Extra extends Basic { name: string; }
하지만 타입은 다른 타입을 extends로 확장할 수 없으며, 오직 교차 타입(&)을 통해서만 가능합니다.
이야기
이야기
이야기
팀은 interface를 타입으로 확장할 수 없다고 생각하여, 공통 기능을 확장하기 위해 모든 구조를 type에서 interface로 다시 작성하는 데 많은 시간과 노력을 낭비했습니다. 그러나 실제로는 기존 타입을 비표준 방식으로 확장할 수 있었습니다.