type Square = {color : string, width : number}
interface Square {
color : string,
width : number,
}
let 네모 = { color : 'red', width : 100 }
object 타입 지정할때 type alias
를 쓰거나 interface
를 쓴다.
interface의 장점 : extends로 복사 가능
interface Student {
name : string;
}
interface Teacher extends Student {
age : number
}
let 학생 : Student = { name : 'kim'};
let 선생 : Teacher = { name : 'kim', age : 20 }
type도 되지않나? intersection type ( extends랑 개념이 다름 )
type Animal = {name : string}
type Cat = { age : number } & Animal
let 고양이 : Cat = {name : 'cat', age : 2 }
interface는 중복 선언 가능 자동으로 합쳐서 타입이 만들어짐. ( 유연하다 )
// 중복 선언했는데 에러가 나지 않음
interface Student {
name : string;
}
interface Student {
score : number;
}
외부 라이브러리같은 경우 interface로 도배되있다.
다른 사람들이 내 프로젝트를 이용 많이 할 것같으며 object 타입 지정할때 interface 사용 추천
일반 변수 혹은 함수는 type
object는 interface
interace에서 중복 속성이 있다면 에러가 발생
type 의 &는 중복 속성에서 에러가 나지 않음.