8장 클래스
8.1 클래스 메서드
클래스 생성자는 매개변수와 관련하여 전형적인 클래스 메서드처럼 취급된다.
8.2 클래스 속성
클래스의 속성을 읽거나 쓰려면 클래스에 명시적으로 선언해야 한다.
8.2.1 함수 속성
메서드 접근 방식은 함수를 클래스 프로토타입에 할당하므로 모든 클래스 인스턴스는 동일한 함수 정의를 사용한다.
class WithMethod {
myMethod() {
// ...
}
}
new WithMethod().myMethod === new WithMethod().myMethod; // true
값이 함수인 속성을 선언하는 방식도 있다. 이렇게 하면 클래스의 인스턴스당 새로운 함수가 생성되며 항상 클래스 인스턴스를 가리켜야 하는 화살표 함수에서 this 스코프를 사용하면 클래스 인스턴스당 새로운 함수를 생성하는 시간과 메모리 비용 측면에서 유용할 수 있다.
class WithProperty {
myProperty: () => {
// ERROR: 속성 'myProperty'은(는) 이니셜라이저가 없고 생성자에 할당되어 있지 않습니다.
// ...
};
}
new WithMethod().myProperty === new WithMethod().myProperty;
// ERROR: 'WithMethod' 형식에 'myProperty' 속성이 없습니다.
함수 속성에는 클래스 메서드와 독립 함수의 동일한 구문을 사용해 매개변수와 반환 타입을 지정할 수 있다. 함수 속성은 클래스 멤버로 할당된 값이고 그 값은 함수이다.