/ TYPESCRIPT

TypeScript - interface에 대해

TypeScript은 다음과 같이 구성되어 있습니다.

interface문법

1. interface사용법

type키워드를 통해서 타입을 변수처럼 작성할 수 있었습니다. “interface”라는 것으로도 할 수 있습니다.

interface를 사용하면 Object의 타입을 편하게 지정할 수 있습니다.

interface Line {
    color : string,
    width : number,
}

let greenLine : Line = { color : "green", width : 30 }

“Line”이라고 하는 interface명을 지정하고 Object처럼 비슷하게 interface를 정의하면 됩니다. 주의할 점은 인터페이스명은 대문자로 시작하여 작명합니다.

2. interface의 확장성

interface는 extends, 즉 확장이 가능합니다. 만약 Animal interface & Dog interface가 필요하다고 가정하면..

interface Animal {
    name : string,
}

interface Dog extends Animal{ 
    age : number,
}

Dog interface 옆에 extends Animal이라고 작성했습니다. 이렇게 되면 Dog interface는 Animal interface를 상속받습니다. Dog interface는 부모의 “name : string”도 가지고 있는 동시에 “age : number”도 가지고 있게 되는 것입니다.

3. type와 interface의 차이점?

type과 interface의 차이점이 무엇일까요? extends하는 법이 조금 다릅니다. interface의 경우는 위에서 처럼 “extends”를 쓰면됩니다.


type의 경우는 “&”을 사용하여 두 object를 합칠 수 있습니다.

type Animal = { 
  name :string 
} 
type Dog = Animal & { age : number }

그런데 사실 interface의 경우도 “&”기호로 합칠 수 있습니다..
주의할점이 있다면 extends를 사용하면 타입끼리 중복속성이 발견될 경우 에러를 내주는데 & 쓰면 때에 따라 아닐 수도 있다는 것입니다.


또한 interface는 타입명이 중복되는 것을 허용해주지만, type의 경우 중복선언을 허용하지 않습니다. 엄격하죠. interface는 중복이 될 경우 extends한 것처럼 합쳐집니다. 물론 속성이 중복되면 에러가 나고 type도 마찬가지로 에러가 발생합니다.


End.