지정되지 않은 경우 어떤 액세스 수정자가 내포됩니까?


138

필드, 속성, 메서드 및 클래스와 같은 액세스 수정자를 지원하는 다른 모든 개념에 대해 지정되지 않은 경우 액세스 수정자가 암시됩니까?


@basarat, TypeScript를 사용한 지 오래되었습니다. 요즘 어떻게 작동하는지 기억하기 어렵습니다! 내가 기억하는 한, 당신의 대답은 합리적으로 보였지만, 그것이 올바른 것으로 표시하기에 충분한 권위가 있다고 생각하지 않았습니다. 귀하의 답변은 해당 언어에 대한 귀하의 경험을 바탕으로합니까, 아니면 사양 정보에서 나온 것입니까?
Sam


1
이 질문과 답변을 명확하게하기 위해, 질문에 명확하게하기 위해 타이프 스크립트를 명시해야합니다. 타입 스크립트 태그가 있지만 이것은 스칼라, 자바, C #, C ++, ...에 대해 논의하지 않은 유일한 표시입니다.
absmiths

답변:


216

A의 모든 class입니다 public지정되지 않은 경우. 키워드를 사용 module하지 않으면의 모든 내용 은 비공개 export입니다.


6
스타터 키트를 가지고 노는 사람들을 위해. 그들 중 일부는 tslint와 함께 제공되며 매우 혼란 스러울 수 있습니다. 이 메시지가 표시되면 기본 또는 암시 적 액세스 수정자를 허용하도록 선택 default access modifier on member/method not allowed 하십시오 tslint.json.
visheshd

1
사전 번역 단계를 사용하여 자동으로 할당 할 수 private있습니까?
Qwerty

-4

동의하지 않습니다

지정되지 않은 경우 클래스의 모든 내용은 공개됩니다.

개인이 사용 되더라도 모든 것이 공개됩니다. 변환 된 코드를보십시오. 개인 주석이 달린 방법은 공개됩니다. 트랜스 파일 만 오류를 발생시킵니다. 공개 및 비공개 모두로 변환됩니다<Object>.prototype.funcName


24
예, 이것이 좋은 지적입니다. 그러나 내 질문은 which access modifiers are implied when not specified오히려 였습니다 can my code be accessed when an access modifier is not specified. 액세스 수정자는 JavaScript 개념이 아니라 TypeScript 개념입니다. 그래서 @basarat의 대답은 내가 질문에서 의미 한 것을 해결했으며 질문과 관련하여 올바른 것으로 보입니다. 아마도 질문과 대답의 문구를 명확히 할 여지가있을 것입니다.
Sam

그것은 TS가 작동하는 방식입니다 .TS 관점에서 "올바른"것과 상관없이 코드를 컴파일 할 것입니다. 이것은 클래스를 제외하고 TS의 모든 것을 의미하지만 TS 경고를 존중한다면 요점은 당신이하지 않을 것입니다 비공개로 표시된 속성에 액세스해야합니다.
앤드류 Bogdanov

3
나는 어떤 것이 실제로 사적인 언어를 생각할 수 없습니다. C #에서는 리플렉션을 통해 모든 개인 필드에서 쉽게 얻을 수 있습니다 . C 또는 C ++와 같은 저수준 언어에서는 포인터를 움직여서 개인 필드를 얻을 수 있습니다. DEP 및 암호화 된 메모리와 같은 OS 수준의 보호 기능이 부족한 액세스 수정자는 더 나은 코드를 작성하는 데 도움이되는 컴파일러 제공 지원입니다. ...권리?
pbarranis 2016 년

@pbarranis 개인 JavaScript 필드 는 실제로 개인 필드 이므로 JavaScript 런타임 내에서 액세스 할 수있는 방법이 없습니다.
Yogu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.