ES6의 클래스를 타입스크립트로 다뤄보자.
JS에는 다음과 같은 코드가 아무 문제 없었다.
class Car {
constructor(color) {
this.color = color;
}
start() {
console.log("start");
}
}
그런데 타입스크립트는 문제가 된다. 사실 정적타입언어 사용자입장에선 당연하다. 생성자가 클래스 내에 선언된 적도 없는 변수에 초기화를 진행하고 있기 때문이다.
따라서
class Car {
color:string;
constructor(color:string) {
this.color = color;
}
start() {
console.log("start");
}
}
이렇게 필드를 타입과 함께 선언해주고, 매개변수도 타입과 함께 선언해준다.
미리 변수선언하지 않고도 생성자에 이용하는 방법이 있긴 하다. 바로 public
이나 readonly
키워드를 이용하는 것임.
둘다 문제없이 동작한다.
원래 JS는 접근제한자를 지원하지 않았지만 TS는 접근제한자를 지원한다…!
private
을 붙이면, 해당 클래스 내부에서만 사용가능한 값이 된다. 심지어 해당 클래스를 상속받은 자식 클래스에서도 참조 불가능하다.