【发布时间】:2018-12-12 12:16:35
【问题描述】:
我试图了解封装在 Typescript 中的工作原理,并提出了一个让我感到困惑的示例,为什么我能够访问甚至直接更改某个类的私有成员。
class Encapsulate {
str:string = "hello"
private str2:string = "world"
}
var obj = new Encapsulate();
console.log(obj.str); //accessible
obj.str2 = "something else";
console.log(obj.str2); //compilation Error as str2 is private
输出:你好,其他的
我收到编译时警告,例如编译错误,因为 str2 是私有的,但我仍然可以更改或访问它。我是否总体上缺少封装的概念,它是什么以及它在 Typescript 上的工作方式。
【问题讨论】:
-
这可能是无效的 Typescript ,但它是 有效的 Javascript 并且因为所有 Javascript 都可以在 Typescript 中运行它可以工作,但编译器会抱怨。
标签: javascript typescript oop