객체의 형태를 확장하는 데 용이하다.
선언 병합을 지원하기 때문에 여러 번 선언이 가능하다.
동일한 이름을 가진 interface 여러 번 선언하면 속성들이 합쳐진다.
interface Person {
age: number;
name: string;
isBirthday: boolean;
}
interface Person {
address: string;
}
const person1: Person = {
age: 1,
name: "abcd",
isBirthday: false,
address: "1010",
};
위의 코드처럼 동일한 Pesron interface를 여러 번 선언하게 되면 하나의 intterface로 병합된다.
튜플, 인터섹션, 유니온 등을 이용해서 더 복잡한 타입 정의 및 조합을 표현하는데 용이하다.
type은 interface와 다르게 동일한 이름을 중복 선언하게 되면 에러가 발생한다.
튜플과 같은 복잡한 타입 표현이 가능하다.
복잡한 타입 조합을 위해서 인터섹션(&)과 유니온(|) 연산자를 지원한다.
type BasicInfo = {
name: string;
age: number;
};
type ContactInfo = {
email: string;
phone: string;
};
// 인터섹션 타입 (&)을 사용해 두 타입을 결합하여 하나의 타입으로 생성
type PersonInfo = BasicInfo & ContactInfo;
const person2: PersonInfo = {
name: "John",
age: 30,
email: "john@example.com",
phone: "123-456-7890",
};
interface는 선언 병합을 통해서 여러 번 선언이 가능해서 주로 객체 타입을 확장하는 데 유리하다.
type은 튜플 등 복잡한 타입을 사용하고 유연한 연산자를 통해서 복잡한 타입 조합을 표현하는 데 적합하다.