【问题标题】:TypeScript accessbility of class members类成员的 TypeScript 可访问性
【发布时间】:2017-01-21 20:47:51
【问题描述】:

来自https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#1.6

“public”关键字表示构造函数参数将保留为字段。 Public 是类成员的默认可访问性,但程序员也可以为类成员指定私有或受保护的可访问性。可访问性是设计时的构造;它在静态类型检查期间强制执行,但并不意味着任何运行时强制执行。

我想知道为什么它不能在运行时强制执行......或者它可能是故意这样设计的?

【问题讨论】:

  • 就像类型检查一样,private 仅在编译时强制执行,但在运行时不存在。 Typescript 是 javascript 的超集,这意味着它具有 js 所没有的特性,当编译成 js 时,所有这些特性都会被删除以使其兼容。
  • 我同意。感谢您的洞察力!

标签: typescript


【解决方案1】:

可访问性是设计时的构造;它在静态类型检查期间强制执行,但并不意味着任何运行时强制执行。

这在常见问题解答https://github.com/Microsoft/TypeScript/wiki/FAQ#you-should-emit-classes-like-this-so-they-have-real-private-members中有介绍

【讨论】:

  • 恐怕我没跟上...你是说因为TypeScript编译成javascript就不可能在TypeScript中实现真正私有的成员吗?在这种情况下,这是一个不幸的选择,而不是故意设计的。
猜你喜欢
  • 2016-12-08
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2013-08-06
  • 2013-09-25
  • 2020-01-19
相关资源
最近更新 更多