TypeScript - interface에 대해
TypeScript은 다음과 같이 구성되어 있습니다.
- TypeScript란?
- TypeScript - 기본 타입 작성법
- TypeScript - Union Type, any, unknown
- Type Narrowing
- Type 키워드로 타입을 변수에 담기
- as const에 대해
- TypeScript - interface에 대해
- TypeScript - never타입?
- TypeScript - tuple타입?
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.