interface Square {
color :string,
width :number,
}
let 네모 :Square = { color : 'red', width : 100 }
type alias와 비슷한 기능을 하지만 interface의 장점으로 extends가 가능!
interface Student {
name :string,
}
interface Teacher extends Student {
age :number
}
Teacher안에 Student의 name과 Teacher의 age가 들어가게 됨!
type Animal = {
name :string
}
type Cat = Animal & { legs: number }
-----------------------------------------------------------------------------------
interface Student {
name :string,
}
interface Teacher {
age :number
}
let 변수 :Student & Teacher = { name : 'kim', age : 90 }
이런식으로 type은 &를 사용해 두 타입을 합칠 수 있음.(extend는 불가능)
그런데 interface도 & 사용가능!
type의 경우는 중복선언을 허용하지 않지만 interface는 중복선언을 허용함
interface Animal { name :string } interface Dog { gender :string } let 변수 :Dog & Animal = { name : '멍멍' , gender : 'male'}
속성이 중복되지 않는다면 중복선언 시 합쳐지는 형태