interface 는 class처럼 청사진으로 사용하는게 아니라 사용자 정의 타입으로 사용함
클래스가 특정 메소드, 변수를 가지도록 강제함
그리고 인스턴스화 불가
interface Orc {
strength: number;
HP: number;
def: number;
getDamage(damage: number): void;
}
let monster: Orc = {
strength: 10,
def: 10,
HP: 100,
getDamage(damage: number) {
this.HP -= damage - this.def;
},
};
console.log(monster);
monster 변수를 Orc라는 객체로 정의
그러니까 타입 체킹 할때 쓴다는거 같음
class OrcLoad implements Orc {
strength;
def;
HP;
constructor(strength: number, def: number, HP: number) {
this.strength = strength;
this.def = def;
this.HP = HP;
}
getDamage(damage: number) {}
}
이런식으로 확장이 가능한다 abstract는 세부 구현이나 시그니쳐만 있어도 되면 반면
interface는 세부구현 없이 시그니쳐만 있어야 한다는게 다른 점임