타입스크립트에서 클래스 선언은 앞서 살펴본 함수의 타입 정의 방법과 크게 다르지 않다.
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
sum(a: number, b: number): number {
return a + b;
}
}
name: string;
코드가 추가된 이유로는 생성자 메서드에 사용될 클래스 속성들을 미리 정의해야 하기 때문이다.
여러 개의 객체를 다루다 보면 의도치 않게 특정 객체값이 바뀌는 상황이 발생할 수 있다. 이런 상황을 예방하기 위해 접근 제어자를 사용하면 에러 발생을 낮출 수 있다.
public
private
protected
클래스 안에 선언된 속성과 메서드에 어디서든 접근 가능하게 하며 기본값이다.
클래스 코드 외부에서 클래스의 속성과 메서드에 접근 불가하게 한다. 클래스 안의 로직을 단절시켜 보호할 때 사용한다.
private
과 유사한 점은 protected
로 선언된 속성/메서드는 클래스 코드 외부에서 사용할 수 없지만 상속받은 클래스에서는 사용할 수 있다.