타입 애일리어스의 상속
type Animal = { breath: true };
type mammal = Animal & { breed: true };
type Human = mammal & { think: true };
const zerocho: Human = { breath: true, breed: true, think: true };
인터페이스의 상속
interface A {
breath: true
}
interface B extends A {
breed: true
}
const b: B = { breath: true, breed: true };
type을 사용할지 interface를 사용할지 정하면됨.interface를 많이 사용함.
인터페이스의 다른 특징
interface A {
talk: () => void;
}
interface A {
eat: () => void;
}
interface A {
shit: () => void;
}
const a: A = { talk() {}, eat() {}, shit() {}, sleep() {} }
interface A {
sleep: () => void;
}
- interface는 같은 이름으로 여러번 선언 할 수가있는데 선언 할 때마다 합쳐진다.
- 이런 합쳐지는 특성 때문에 라이브러리들이 type이 아니라 interface로 만들어 졌다.왜냐하면 나중에 내가 다른사람들의 라이브러리를 확장 할 수가 있기 때문
- 보통 interface많이쓴다 확장이 쉬워서.. type애일리어는 같은 변수이름 사용 못함.