
type과 interface는 TypeScript에서 타입을 정의하는 두 가지 주요 방법이다. 이 둘은 비슷한 기능을 제공하지만, 사용 방법과 몇 가지 중요한 차이점이 있다.
타입스크립트는 한 객체가 다른 객체를 상속할 수 있게 해주는 interface 라는 일급 클래스 원시 타입(first-class primitive)을 제공한다.
주로 객체 구조를 정의하는데 사용한다.
interface WithId {
id: string
}
interface User extends WithId {
name: string
}
const user: User = {
id: '0623',
name: 'chanmin',
wrongProperty: 123, // Error!
}
type 키워드는 객체 타입뿐만 아닌 모든 유형의 타입을 정의할 수 있다.
또한 유니온(|) 또는 인터섹션(&) 타입, 튜플 등과 같이 복잡한 타입을 정의하는데 사용할 수 있다.
interface Animal {
name: string;
}
interface Bear extends Animal {
honey: boolean;
}
const bear = getBear();
// type 예시
type Animal = {
name: string;
};
type Bear = Animal & {
honey: boolean
};
const bear = getBear();
interface Window {
title: string
}
interface Window {
ts: TypeScriptAPI
}
// 위 두 인터페이스는 아래처럼 병합된다.
interface Window {
title: string
ts: TypeScriptAPI
}
객체 지향적인 방식으로 코드를 작성하려면 주로 interface 를 사용하고 , 함수형 패턴이나 더 복잡한 데이터 구조를 다루려면 type 을 사용하는 것이 좋다.