Typescript:类型“Number”不能用作索引类型。

9
在TypeScript中,我有一个数组,我像使用一个map一样来访问另一个对象数组。这是我的代码的一个非常简化的例子:
var mp : Number[] = [1, 2, 0];
var arr : any[] = ['a', 4, /regex/];

console.log(arr[mp[2]])

然而,运行这个会产生:

error TS2538: Type 'Number' cannot be used as an index type.

我已经在其他地方查看了,但这种错误的其他答案并不适用于像数组和Number这样简单的东西。如果不是一个Number对象,我怎么能索引一个数组呢?

1个回答

23

TypeScript有两种基本的数字类型,原始类型number和对象类型Number。请参考TypeScript:原始类型之间的区别以获取解释,但简而言之:

JavaScript有原始类型(number、string等)和对象类型(Number、String等,在运行时明显)。TypeScript中的类型numberNumber分别指它们。

事实上,如果你运行:

console.log(typeof 1);

你会注意到它返回的是 number 而不是 Number

如果你将你的映射改为 number 对象的数组,你的代码就可以无错误地编译了。


2
typeof(1) is not necessary, just typeof 1 is most commonly used. It's unnecessary parentheses making it look like a function call, just like typing return(1) - Ruan Mendes
谢谢,已删除括号。 - Riolku
4
TypeScript有两种数字类型,原始数字类型和对象类型数字Number。还有一个BigInt类型。 - VLAZ
2
更改为“基本数字类型” - Riolku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接