
property를 사용할 때는 interface 사용

interface를 통해 property를 강제


속성 앞에 readonly를 추가하면 수정이 불가능
property의 값을 제한하고 싶을 때

interface Add {
(num1: number, num2: number): number;
}
const add: Add = (x, y) => {
return x + y;
};
interface IsAdult {
(age: number): boolean;
}
const abc: IsAdult = (age) => {
return age > 19;
};
// implements
interface Car {
color: string;
wheels: number;
start(): void;
}
class Bmw implements Car {
color;
wheels = 4;
constructor(color: string) {
this.color = color;
}
start() {
console.log("go!!!");
}
}
const bmw = new Bmw("black");
interface Benz extends Car {
door: number;
stop(): void;
}
const benz: Benz = {
color: "blue",
wheels: 4,
door: 5,
start() {
console.log("go now!!!");
},
stop() {
console.log("stop");
},
};
// 다중 상속
interface Toy {
name: string;
}
interface ToyCar extends Car, Toy {
price: number;
}