打字稿:类型“数字”不能用作索引类型

时间:2021-06-15 13:50:48

标签: arrays typescript types

在 TypeScript 中,我有一个数组,我像使用地图一样使用它来访问另一个对象数组。这是我的代码的一个极其简化的示例:

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 个答案:

答案 0 :(得分:2)

TypeScript 有两种基本的数字类型,原始 number 和对象类型 Number。有关解释,请参阅 TypeScript: Difference between primitive types,但简而言之:

<块引用>

JavaScript 具有原始类型(数字、字符串等)和对象类型(数字、字符串等,它们在运行时显示)的概念。 TypeScript 类型 number 和 Number 分别指代它们。

事实上,如果你运行:

console.log(typeof 1);

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

如果您将地图更改为 number 对象的数组,则您的代码将不会出错。