interface는 extends
type alias는 intersection Operator(&)
interface Animal {
name : string;
}
interface Bear extends Animal{
honey : boolean
}
const bear1 : Bear = {
name : 'honey bear',
honey : true
}
type Animal2 = {
name : string;
}
type Bear2 = Animal & {
honey : boolean
}
const bear2 : Bear2 = {
name : 'honey bear',
honey : false
}
interface는 선언 병합이 가능함, type alias는 불가능
interface Animal {
name : string;
}
interface Animal {
honey : boolean
}
const bear : Animal = {
name : 'honey bear',
honey : true
}
type Animal = {
name : string;
}
// 여기서 에러남
type Animal = {
honey : boolean
}
둘다 클래스에 implements를 사용할 수 있다.
interface IArticle {
category : string;
content : string;
}
class Article implements IArticle {
public category = '';
public content = '';
}
Union 유형을 사용하면 개발자가 타입a 또는 타입b가 될 수 있는 새 type을 만들 수 있다.
선언은 항상 type으로 해야함
interface Animal {
name : string;
}
interface Bear {
honey : boolean
}
type Newtype = Animal | Bear;
const bear1 : Newtype = {
name : 'honey bear1'
}
const bear2 : Newtype = {
name : 'honey bear2',
honey : true
}