개인적으로는 private field(#)를 선호합니다. 자바스크립트의 원래 기능과 좀 더 가깝기 때문입니다. public 수식어는 생략해도 되므로 사용하지 않고, private 수식어는 private field로 대체합니다. 따라서 protected 수식어만 명시적으로 사용합니다.
implements하는 인터페이스의 속성은 전부 public이어야 합니다.
interface Human {
name: string;
age: number;
married: boolean;
}
class Person implements Human {
name;
protected age;
married;
constructor(name: string, age: number, married: boolean) {
this.name = name;
this.age = age;
this.married = married;
}
}
// Class 'Person' incorrectly implements interface 'Human'. Property 'age' is protected in type 'Person' but not in type 'Human'.