본문 바로가기
Typescript

[Typescript] type과 interface의 차이

by devebucks 2022. 10. 12.
728x90

차이점

- interface는 선언적 확장이 가능하다.

- interface는 객체 타입을 만들기 위한 것이다. 객체 타입만 만들 수 있다.

- interfacesms computed type을 만들 수 없다.

 

interface는 '선언적 확장'이 가능하다는 점.

선언적 확장이라고 하면, interface를 같은 이름으로 선언이 가능하다는 것이다. type은 같은 이름으로 type 선언이 불가능함.

 

- 확장 방법의 차이

interface는 클래스처럼 다룰 수 있다. 다른 interface에 extends할 수 있다.

interface Human  { id: number, name: string }
interface Student extends human { school: string }

type은 다음처럼 확장할 수 있다.

type human = {
  age: number,
  name: string
}
type student = human & { school: string };

interface는 객체에만 사용이 가능하다. 객체 타입을 만들기 위한 것이다.

 

interface는 computed value의 사용이 불가능하다.

type name = 'firstName' | 'lastName'

type NameTypes = {
  [key in name]: string
}

const yc: NameTypes = {firstName: 'hi', lastName: 'yc'}

interface NameInterface {
  // error❌
  [key in name]: string
}

 

728x90

댓글