1

我正在将 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
4

1 回答 1

2

在本声明中:

a[n] = 44;

a是一个对象。

n是 Node 类的一个实例。

所以你试图使用一个类作为a对象属性的键。

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

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

a[typeof n]
于 2012-10-18T09:18:09.137 回答