在TypeScript中使用类型变量访问对象文字不起作用

时间:2012-10-18 08:46:13

标签: typescript

我正在将Java代码翻译成TypeScript,而且我遇到了一些我无法理解的东西。 我在这里创建了对象文字名a,我设法将它用作关联数组。 然后我定义了类Node并创建了变量名n,当我尝试使用变量n作为关联数组的关键时,tsc编译器失败了Illegal property access。 如果我将n变量转换为类型的kk变量,那么一切都可以。

为什么?

var a = {}
a['a'] = 3
a[4] = 5

class Node {

}
var n:Node = new Node();
a[n] = 44;  <---- Illegal property access

var kk: any = n;
a[kk] = 55

1 个答案:

答案 0 :(得分:2)

在此声明中:

a[n] = 44;

a是一个对象。

n是Node类的一个实例。

因此,您尝试使用类作为a对象上属性的键。

当您使用kk类型any时,TypeScript会假设您知道自己在做什么,并假设它在运行时将是一个字符串或数字。这实际上是忽略了这个问题。

您可以使用n变量的类型,它是一个字符串:

a[typeof n]