Проблема в том, что typeScript просто компилирует в javaScript, но у него нет времени выполнения.
TypeScript выдаёт вам эти предупреждения при типе компиляции .Он говорит вам:
Эй, Encapsulate
str2
является частным, и вы все еще пытаетесь получить к нему доступ.Вы не должны этого делать.
Однако, как только ts скомпилирует и сгенерирует код js, все аннотации машинописного текста будут потеряны в коде.JavaScript ничего не знает о private
, enum
или interfaces
.Как только ваш код будет скомпилирован и затем запущен в браузере или в любой другой среде выполнения js, у вас будет Encapsulate
объект javaScript с двумя полями, str1
и str2
.Они не могут быть private
или public
, потому что js не знает об этом.Encapsulate
будет простым голым объектом javaScript.
Так что, в основном, typeScript помогает вам обнаруживать ошибки во время компиляции.Но как только код скомпилируется, он «забудет» все о аннотациях typeScript.
Он может сказать, что вам не следует обращаться к str2
.Он может даже отказаться от компиляции, если найдена такая ошибка (это зависит от конфигурации tsconfig).Но скомпилированный код не будет иметь никакого отношения к машинописи.