interface 문법을 쓰면 object 자료형의 타입을 보다 편리하게 지정가능하다.
interface Square {
color : string,
width : number,
}
let 네모: Square = {color:'red',width:100}
이렇게 interface는 object랑 비슷하게 작성하면 된다.
type alias와 용도와 기능이 똑같다고 보면 되는데
만들어 두면, object자료를 만들 때 interface를 집어넣어 편하게 타입지정을 할 수 있다.
interface는 extends를 할 수 있다는 장점이 있다.
예를 들어서
Student interface에는 name 속성이 필요하고
Teacher에는 name,age둘다 들어간다고 해야한다면
interface Student {
name: string,
}
interface Teacher {
name: string,
age : number.
}
평소라면 이렇게 만들겠지만, extends를 쓴다면
interface Student {
name : string,
}
interface Teacher extends Student {
age : number
}
여기서 extends 문법은 interface 여기에 복사해달라는 뜻이다.
그럼 이제 Teacher은 age라는 속성 말고도 Student 안에 있는 name 속성도 같이 가지게 된다.
interface의 경우
interface Animal { name : string, } interface Cat extends Animal { legs: number. }
type alias의 경우
type Animal = { name : string, } type Cat = Animal & { legs: number}
이렇게 type alias의 경우 extends는 안되고 & 기호를 써서 object를 합칠 수 있다.
interface의 경우
interface Animal { name :string } interface Animal { legs :number }
type의 경우
type Animal = { name : string } type Animal = { legs : number }
interface의 경우에는 계속 override를 할 수 있지만, type은 중복선언을 허용하지 않는다.
interface Animal {
name : string,
}
interface Dog extends Animal {
name : number
}
이렇게 name 속성이 중복되면 에러가 난다.
이와 비슷하게
interface Animal {
name :string
}
interface Dog {
name :number
}
let 변수 :Dog & Animal = { name : '멍멍' }
이렇게 해도 에러가 뜨는것은 매한가지다.
하지만 둘다 name : string타입이면 에러가 나지 않는다.