我正在研究 TypeScript 中私有成员的实现,我发现它有点令人困惑。 Intellisense 不允许访问私有成员,但在纯 JavaScript 中,它就在那里。这让我觉得 TS 没有正确实现私有成员。有什么想法吗?
class Test{
private member: any = "private member";
}
alert(new Test().member);
原文由 Sean Feldman 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在研究 TypeScript 中私有成员的实现,我发现它有点令人困惑。 Intellisense 不允许访问私有成员,但在纯 JavaScript 中,它就在那里。这让我觉得 TS 没有正确实现私有成员。有什么想法吗?
class Test{
private member: any = "private member";
}
alert(new Test().member);
原文由 Sean Feldman 发布,翻译遵循 CC BY-SA 4.0 许可协议
总结- 类型系统将抛出警告消息。但是私有是一个类型系统特定的特性,所以它会在运行时消失。
在此处阅读我写的关于访问 TypeScript 私有变量的文章: https ://szaranger.medium.com/stop-relying-on-private-to-hide-variables-in-typescript-3c45d25a58d0
原文由 Sean Amarasinghe 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.5k 阅读
4 回答3.4k 阅读✓ 已解决
2 回答3k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
就像类型检查一样,成员的隐私只在编译器内强制执行。
私有属性被实现为常规属性,并且不允许类外的代码访问它。
要在类中使某些东西真正私有,它不能是类的成员,它将是在创建对象的代码内的函数范围内创建的局部变量。这意味着您不能像类成员一样访问它,即使用
this
关键字。