뭘 사용할지 모를때는 interface
를 사용하고 type
의 특성이 필요할때만 type
을 사용
튜플이나 단순한 원시값의 타입 선언은 type
을 사용 하지만 정답은 없고 팀의 컨벤션에 따라가는게 좋을 것 같다.
type
과 interface
는 객체의 타입의 이름을 지정하는 것입니다.
둘의 기능은 거의 비슷하지만 몇 가지 차이점이 있습니다.
interface
: extendstype
: &interface interface1 {
a: string;
}
interface interface2 extends interface1 {
b: string;
}
const interfaceConst: interface2 = {
a: 'a',
b: 'b'
}
type type1 = {
a: string;
}
type type2 = type1 & {
b: string;
};
const typeConst: type2 = {
a: 'a',
b: 'b',
}
interface
는 같은 이름의 객체를 다시한번 선언하면 자동으로 확장이 됩니다. 하지만 type
은 불가능 합니다.
interface interface {
a: number
}
interface interface {
b: number
}
const interfaceConst: interface = {
a: 1,
b: 2,
}
이를 Interfaces는 Declaration merging이 가능하지만, Types는 Declaration merging이 불가능하다고 한다.