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

新手上路,请多包涵

我正在研究 TypeScript 中私有成员的实现,我发现它有点令人困惑。 Intellisense 不允许访问私有成员,但在纯 JavaScript 中,它就在那里。这让我觉得 TS 没有正确实现私有成员。有什么想法吗?

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

原文由 Sean Feldman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 580
2 个回答

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

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

要在类中使某些东西真正私有,它不能是类的成员,它将是在创建对象的代码内的函数范围内创建的局部变量。这意味着您不能像类成员一样访问它,即使用 this 关键字。

原文由 Guffa 发布,翻译遵循 CC BY-SA 3.0 许可协议

总结- 类型系统将抛出警告消息。但是私有是一个类型系统特定的特性,所以它会在运行时消失。

在此处阅读我写的关于访问 TypeScript 私有变量的文章: https ://szaranger.medium.com/stop-relying-on-private-to-hide-variables-in-typescript-3c45d25a58d0

原文由 Sean Amarasinghe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题