当前位置: 首页 > 面试题库 >

为什么我不能访问TypeScript私有成员?

方通
2023-03-14
问题内容

我正在研究TypeScript中私有成员的实现,但我感到有些困惑。Intellisense不允许访问私有成员,但是在纯JavaScript中,仅此而已。这使我认为TS无法正确实现私有成员。有什么想法吗?

class Test{
  private member: any = "private member";
}
alert(new Test().member);

问题答案:

就像类型检查一样,成员的隐私仅在编译器中强制执行。

私有属性被实现为常规属性,并且不允许类外的代码对其进行访问。

为了使某些东西真正成为类的私有对象,它不能成为该类的成员,而应是在创建对象的代码内的函数作用域内创建的局部变量。这意味着您不能像类的成员那样访问它,即使用this关键字。



 类似资料:
  • 问题内容: 在大学里学习时,我不得不做一些难看的Java基础知识,例如不使用封装就可以工作,同一类中的主要方法等。(我不想在Java样式指南上展开讨论,我只是想澄清一下,我不会在大学以外写这样的东西) 我偶然发现了一种我无法向自己解释的行为: 为什么这段代码可以编译并正确运行?我怎么可能访问私有字段?由于主类位于同一类中,因此行为异常? 问题答案: 由于静态方法是类的成员,因此可以访问中的任何私有

  • 静态编程语言中的属性和开放属性有什么区别?下面的代码抱怨我声明setter私有,Intellij说开放属性不允许私有setter。什么是开放属性? 为什么上面的代码无效,而这个代码有效? 编辑:我使用的是spring-allopen插件,将类显式标记为open并没有什么不同。

  • 问题内容: 是在类级别还是在对象级别的私有成员访问权限。如果是在对象级别,则以下代码不应编译 请说明在sub的messWithI()方法中访问obj的成员i是否有效 问题答案: 正如DevSolar所说的,它处于(顶级)类级别。 从Java语言规范的6.6节开始: 否则,如果将成员或构造函数声明为私有,则仅当访问发生在包含成员或构造函数的声明的顶级类(第7.6节)的主体内时,才允许访问。 请注意,

  • 问题内容: 大家好!我有一个简单的问题。…为什么我可以从main方法中获得一个私有变量?我知道,我在包含类中,但这是主要的。我相信主体不是包含它的类的一部分……那么我不会去找私人成员,但是我可以……为什么?请帮助… thx 问题答案: Main是您的类的一部分,您已经在类中声明了它:) main不是您的对象的一部分,它不会是您从该类创建的对象的任何部分,但它仍然是该类的一部分。这对于任何静态函数都

  • 我只是碰巧发现,可以使用指令在封闭类之外直接访问嵌套私有模板类: 标记为“error:__xxx is private”的行在未注释时正确报告错误。但是使用的行编译时不会受到编译器的任何抱怨。 我在GCC-4.9.2、Clang-3.5.0和visual studio 2013 Express上尝试了这一点。GCC命令行:

  • 有人问过我这个问题。我没能给出正确的答案。你能帮我一下吗?为什么我们不能在setTimeout中访问事件(e)的值?