이 질문에 대한 답변으로 할 말이 많이 있는데, 이것이 내 마음에 떠오른 첫 번째 생각입니다.
무엇보다 먼저 private
컴파일 타임 구조 일 뿐이며 런타임에 적용 할 수 없습니다 ( 관련 논의는 여기 와 여기 를 참조 하세요 ). 따라서 private
보안 목적으로 어떤 식 으로든 유용하다는 생각을 버리십시오 . 그것은 단순히 그것이 무엇에 관한 것이 아닙니다.
그것은 이다 캡슐화에 대해, 당신이 당신의 구성 요소에 필드 나 메소드가있을 때 당신이 그것을 다른 곳에서 액세스 할 수 없습니다 것을 취소하고, 거기에 캡슐화 할 것인지, 당신은 절대적으로 그것을 확인해야합니다 private
: 그것은 무엇의 private
입니다 : 무엇을 입었 든 수업 외부에서 건드리지 말아야한다는 의도를 나타냅니다.
똑같습니다 public
: 이것도 컴파일 시간 전용 구조이므로 클래스 멤버가 public
기본적으로 true이지만 런타임에 정확히 0의 의미를 갖습니다. 그러나 클래스 API의 일부로 외부 세계에 명시 적으로 노출하려는 멤버가있는 public
경우이 의도를 알리기 위해 절대적으로 만들어야합니다 . 이것이 바로 그 이유 public
입니다.
이것은 일반적으로 Typescript에 모두 적용됩니다. 특히 Angular에는 구성 요소 클래스에 공용 멤버를 사용하는 데 유효한 사용 사례가 있습니다. 예를 들어 컨테이너 / 구성 요소 (일명 smart / dumb ) 패턴을 구현할 때 "dumb"자식이 생성자 주입을 통해 "스마트"부모를 주입하는 경우, 부모의 구성원이 자녀가 만져서는 안되는 것과 접촉해서는 안되는 것에 대한 의도를 전달하는 것이 매우 중요합니다. 그렇지 않으면 부모의 술 캐비닛에서 장난을 치는 멍청한 아이를 잡을 때 놀라지 마십시오.
그래서, 귀하의 질문에 대한 나의 대답 :
항상 아래와 같이 모두 비공개로 추가해야합니까?
단호한 아니오 입니다. 키워드의 목적을 무너 뜨리기 때문에 항상 추가 해서는 안됩니다 private
. 키워드를 어디에나두면 더 이상 의도를 나타내지 않기 때문입니다. 어디에도 두지 않는 것이 좋습니다.