【发布时间】:2021-05-13 11:56:20
【问题描述】:
考虑以下小sn-p:
class BlueprintNode {
private metadata: number[] = [];
}
var node = new BlueprintNode();
node["metadata"].push("Access violation, rangers lead the way.");
TypeScript 编译器如何允许通过使用方括号表示法访问私有成员?它甚至可以正确检测给定属性的类型。使用点符号,它会正确显示编译错误。
【问题讨论】:
-
我猜这是因为方括号表示法适用于任何对象,并且 TypeScript 希望尽可能接近 JavaScript。我认为尝试限制您使用方括号是没有意义的,即使编译器能够检查
node["metadata"]实际上是私有属性,因为您始终可以通过使用像node[propName]这样的变量来绕过此检查.顺便看看这个答案:stackoverflow.com/a/12713869/310726
标签: typescript