2013-12-20 3 views
59

Для всех понятий, которые поддерживают модификаторы доступа, такие как поля, свойства, методы и классы, которые имеют доступ к модификаторам, если они не указаны?Какие модификаторы доступа подразумеваются, если они не указаны?

+0

Эй, сэм. Можете ли вы пометить как ответ, чтобы он не остался в оставшейся без очереди очереди – basarat

+0

@basarat, это было давно, так как я использовал TypeScript, поэтому трудно запомнить, как это работает в наши дни! Насколько я помню, ваш ответ выглядел разумным, но я не чувствовал, что это достаточно авторитетно для меня, чтобы отметить его как правильное. Является ли ваш ответ основанным на вашем опыте работы с языком, или он зависит от информации в спецификациях? – Sam

+0

на основе спецификации https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md – basarat

ответ

78

Все, что находится в class, равно public, если не указано. Все в module является закрытым, если не используется ключевое слово export.

+5

Для людей, играющих с стартером. Некоторые из них поставляются с tslint, и это может стать очень запутанным. Когда вы видите это сообщение 'default access modifier on member/method not allowed ' Проверьте' tslint.json', чтобы разрешить модификатор доступа по умолчанию или подразумеваемый. – visheshd

-1

Я не согласен, что

Все в классе является публичным, если не указано.

Все публично, даже если используется частный. Просто посмотрите на преобразованный код. Частные аннотированные методы будут доступны общественности. Только переполнение вызовет ошибки. Как государственные, так и частные будут преобразованы в <Object>.prototype.funcName

+8

Да, это хороший момент. Однако мой вопрос заключался в том, «какие модификаторы доступа подразумеваются, если они не указаны», а не «может ли доступ к моему коду, когда модификатор доступа не указан». Модификаторы доступа - это концепция TypeScript, а не концепция JavaScript. Поэтому я думаю, что ответ @ basarat ответил на то, что я имел в виду в вопросе, и кажется правильным в контексте вопроса. Возможно, есть место для устранения разногласий в вопросе и ответе. – Sam

+0

Вот как работает TS, он будет компилировать ваш код независимо от того, является ли он «правильным» с точки зрения TS, это подразумевает все в TS без исключения для классов, но главное, если вы уважаете TS-предупреждения - t доступ к свойствам, помеченным как закрытый. –

Смежные вопросы