본문 바로가기

프로그래밍지식/typescript

type alies 와 interface 의 차이점

결론

  • type alies에서 지원하는 기능은 모두 interface에서도 쓸수있다.
  • type alies에서는 프로퍼티 추가할 수없지만 interface에서는 가능하다.
  • type alies와 interface 를 한프로젝트에서 중복으로 쓰는것보다는 통일해서 쓰는게좋다. (type or Interface)

 

Type Alies(타입별칭) 이란

똑같은 타입을 한 번 이상 재사용하거나 또 다른 이름으로 부르고 싶은 경우도 존재합니다.타입 별칭은 바로 이런 경우를 위하여 존재한다.  타입을 위한 이름 을 제공합니다. 타입 별칭의 구문은 아래와 같습니다. 타입스크립트 공식문서

 

즉 어떤변수,함수,객체에 타입을 지정을했는데 똑같은 타입일경우에 반복해서 쓸경우 가독성이 떨어진다. 뿐만아니라 타입을 수정해야될때에도 여러번 수정해줘야한다. 이런경우 재사용성을 높이기 위해서 Typle Alies를 사용합니다. 아래 예처럼 말이다.

 

const personOne : {name:string, age:number} = {name:'mark', age:23};
const personTwo : {name:string, age:number} = {name:'father', age:28};
const personThree : {name:string, age:number} = {name:'son', age:28};

type Person =  {
    name : string;
    age : number;
}

const Mark : Person = {name:'mark', age:23};
const Father : Person  = {name:'father', age:28};
const Son : Person = {name:'son', age:28};

 

Interface(인터페이스

인터페이스 선언은 객체 타입을 만드는 또 다른 방법입니다. -타입스크립트 공식문서

 

공식문서 말 그대로 이해하면 객체 외에 다른 곳에서는 쓸 수 없다는 말이다. 오직 객체타입에서만 사용을 할 수있다.

 

Type Alies VS Interface 차이점

타입 별칭과 인터페이스는 매우 유사하며, 대부분의 경우 둘 중 하나를 자유롭게 선택하여 사용할 수 있습니다. interface가 가지는 대부분의 기능은 type에서도 동일하게 사용 가능합니다. 이 둘의 가장 핵심적인 차이는, 타입은 새 프로퍼티를 추가하도록 개방될 수 없는 반면, 인터페이스의 경우 항상 확장될 수 있다는 점입니다. - 타입스크립트 공식문서

 

타입과 인터페이스의 가장 큰 차이점은 바로 프로퍼티 추가가능 여부이다. 타입같은경우에는 프로퍼티가 추가가 안되지만 인터페이스는 추가가 가능하다. 아래 예를 통해서 살펴보자

 

인터페이스 프로퍼티 추가 예시

interface Movie {
  title: string
}

interface Movie {
  price : number;
}

const movie : Movie = {title:'darkNight', price : 3000};

 

타입별칭 프로퍼티 추가안됨 예시

type Movie =  {
  title: string
  
}

type Movie = {
  price : number;
}

// Error : duplicate identifier 'Movie'.(2300)

 

예제와 같이 타입에 프로퍼티를 추가하려고하면 이미 타입이 선언되었기때문에 안된다라는 에러메세지가 뜬다.