웹 개발/면접 질문 및 웹 관련 질문

난감했던 질문(1) - type과 interface 차이

개발하는 동이 2024. 11. 3. 14:29
728x90

 

제가 회사 면접을 봤을 때 가장 난감했던 질문이 있었는데 간단한 거라면 간단한 것이지만, 저는 아직 많이 부족하기에 이 질문에 대해서 공부를 해본 적도 없었는데요...

 

질문은 "typescript에서 interface랑 type의 차이점은 무엇인지 아시나요?"라는 질문이 들어왔는데 저는 사실 잘 몰랐습니다...

반성해야 하는 부분이죠...

 

그래서 오늘은 typescript에서 interface라 type의 공통점과 차이점에 대해서 알아보는 시간을 가질 것입니다.

 

typescript에서 interface와 type은 값의 타입에 대한 구조를 정의하기 의해 사용하지만 약간의 차이가 있습니다.

우리는 프로젝트를 진행하면서 프로젝트의 성격을 고려해 둘 중 원하는 자료형을 사용하면 됩니다.

 

사용하는 방식에 대해서 알아보면 

// interface

// 정의
interface person {
    name: string,
    age: number
}

// 사용
let person :personinterface = {
    name: 'dongesssss',
    age: 27
}

--------------------------------------------------------------

// type 

// 정의
type person = {
    name: string,
    age: number
}

// 사용
let person :persontype = {
    name : 'dongesssss',
    age:27
}

두 가지 방법 interface는 자료형 자체를 선언하는 개념이고

type의 경우 변수 안에 타입에 대한 정보를 대입해서 저장해 놓는 개념이다.

(interface는 이름 그대로 객체의 타입에 대한 정보만 대입할 수 있다.)

 

다음은 확장하는 방식에 대해서 알아보자 

// interface
interface person{
    name : string,
    age: number
}

// 방법1 : extends 사용
interface weight extends person{
    weight: number
}

// 방법2 : 새로 선언
interface poerson {
    weight: number
}

// type
type person = {
    name: string,
    age: number
}

// 방법 : &연산자 사용
type weight = person & {
    weight : number
}

 

마지막으로 공통점과 차이점에 대해서 알아보자

공통점 

1. 타입을 정의해서 사용할 때는 차이 없다.

 

2. 제네릭을 사용할 수 있다.

 

3. 타입 확장이 가능하다.

 

차이점

1. type은 같은 이름으로 확장이 불가능하지만 그와 반대로 interface는 확장 가능하다.

 

2. type은 number, string, array와 같은 자료형에 대한 타입도 정의할 수 있지만, interface는 오로지 object만 가능하다.

 

3. type은 union type intersection type으로 정의할 수 있지만 그와 반대로 interface는 불가능하다.

728x90
반응형