class에는 modifier가 3가지 있다.
class Vehicle {
color: string;
constructor(color: string) {
this.color = color;
}
}
// initialize를 타입정의와 같은 줄에 써줄 수 도 있다. (변수로 받지 않는다면)
class Vehicle {
color: string = 'blue';
constructor(color: string) {
}
}
class Vehicle {
constructor(public color: string) {}
}
extends
를 하면, super()
를 사용해서, 상위에 있는 constructor
에 넘겨줘야한다.
주의할 점은 파라미터가 중복되는 경우 modifier가 다르면 안된다.
class Vehicle {
constructor(public color: string) {}
}
const vehicle = new Vehicle('red');
console.log(vehicle);
class Car extends Vehicle {
constructor(color: string, public brand: string) { // color를 private color: string로 하면 에러가 발생함.
super(color);
}
}
const myCar = new Car('blue', 'ford');
console.log(myCar);
필수는 아니지만, class가 포함해야할 interface를 정의해줄 때 사용한다.
어디서 에러가 나는것인지 (타입을 만족하지 못하는지) 찾기 쉽게 해준다.
// interface를 export해서 class로 가져간다.
export interface Spec {
color: string;
price: number;
}
// class는 implements하는 interface를 만족해야 한다.
import { Spec } from './interfaces';
class Vehicle implements Spec {
color: string;
price: number;
constructor(color: string, price: number) {
this.color = color;
this.price = price;
}
}
const vehicle = new Vehicle('red', 1000);
console.log(vehicle);