
Type alias(타입 별칭)과 interface는 타입의 이름을 지정하는 방법으로 사용법이 매우 유사하다.
하지만, 차이점이 있다면 (1) 타입 확장 방법이 다르고, (2) 선언 병합 가능 여부이다.
extends 키워드를 사용해서 기존 타입으로부터 확장된 타입을 생성할 수 있다. (클래스 상속 느낌)
interface Animal {
name : string;
}
interface Bear extends Animal {
honey : boolean;
}
const bear1: Bear = {
name : 'honey bear',
honey : true
}
타입 별칭이 확장할 때는 extends 키워드 사용이 불가능하고, &(intersection operator) 를 사용해야 한다.
type Animal = {
name : string;
}
type Bear = Animal & {
honey : boolean;
}
const bear2: Bear = {
name : 'honey bear',
honey : true
}
선언 병합이란 타입 선언 후 같은 타입을 아래에서 다시 선언했을 때 병합하는 것을 말한다.
interface는 선언 병합이 가능하지만, Type alias는 선언 병합이 불가능하다.
interface Animal {
name : string;
}
interface Animal {
honey : boolean;
}
const bear1: Animal = {
name : 'honey bear',
honey : true
}
➡️ implements에 대해 학습한 후 추가 포스팅 예정
타입A와 타입B는 type alias / interface 중 어떤 것으로 선언해도 상관없다.
이때, 새로운 타입은 무조건 type 으로 선언해야 한다!
interface Animal {
name : string;
}
interface Bear {
honey : boolean;
}
type NewType = Animal | Bear;
const bear1: NewType = {
name : 'honey bear',
honey : true
}
type Animal = {
name : string;
}
type Bear = {
honey : boolean;
}
type NewType = Animal | Bear;
const bear1: NewType = {
name : 'honey bear',
honey : true
}