13장. 타입과 인터페이스의 차이점 알기

개요

타입스크립트에서 명명된 타입을 정의할 때 typeinterface 두 가지 방법을 사용할 수 있습니다. 대부분의 상황에서는 둘 다 사용할 수 있지만, 몇 가지 중요한 차이점들이 있습니다.

공통점

1. 객체 타입 정의

둘 다 객체의 형태를 정의할 수 있습니다.

// type 사용
type TUser = {
  name: string;
  age: number;
};

// interface 사용
interface IUser {
  name: string;
  age: number;
}

2. 함수 타입 정의

둘 다 함수의 타입을 정의할 수 있습니다.

// type 사용
type THandler = (event: Event) => void;

// interface 사용
interface IHandler {
  (event: Event): void;
}

3. 제네릭 지원

둘 다 제네릭을 지원합니다.

// type 사용
type TContainer<T> = {
  value: T;
};

// interface 사용
interface IContainer<T> {
  value: T;
}

4. 클래스 구현 (implements)

둘 다 클래스가 구현할 계약을 정의할 수 있습니다.

class MyClass implements TUser {
  name = 'John';
  age = 30;
}

class MyClass2 implements IUser {
  name = 'Jane';
  age = 25;
}

5. 확장 가능성

서로 확장할 수 있습니다.

// interface가 type을 확장
interface IExtended extends TUser {
  email: string;
}

// type이 interface를 확장
type TExtended = IUser & {
  email: string;
};

주요 차이점