'type'과 'interface'는 모두 사용하여 타입스크립트에서 사용 할 수 있습니다.
하지만 몇가지 다른점이 존재합니다.
인터페이스는 확장하거나 구현할 수 있지만, 타입은 그렇지 않습니다. 이것은 extends 키워드를 사용하여 기존 인터페이스의 속성을 상속하여 새 인터페이스를 만들 수 있지만, 타입으로는 이를 할 수 없다는 것을 의미합니다. 인터페이스는 또한 구체적인 구조를 가진 객체를 정의하는 데 사용됩니다.
타입은 합집합, 교집합 및 튜플 유형을 정의할 수 있습니다. 이러한 기능은 인터페이스에서 사용할 수 없습니다.
인터페이스는 일반적으로 객체의 모양을 정의하는 데 사용되며, 타입은 객체뿐만 아니라 어떤 것이든 유형을 정의하는 데 사용됩니다
// Interface example
interface Person {
firstName: string;
lastName: string;
}
interface Teacher extends Person {
subject: string;
}
// Type example
type Animal = {
name: string;
species: string;
}
type Pet = Animal & {
owner: string;
}
type Coordinates = [number, number];
이 예제에서는 Person과 Teacher라는 두 가지 인터페이스를 정의하고 Person에서 Teacher를 확장했습니다. 또한 Animal이라는 유형을 정의하고 Animal과 소유자 속성이 있는 개체의 조합인 Pet이라는 다른 유형을 정의하는 데 사용했습니다. 마지막으로 두 개의 요소가 있는 튜플 유형인 좌표라는 유형을 정의했습니다.