【问题标题】:Typescript: Type 'Number' cannot be used as an index type [duplicate]打字稿:类型“数字”不能用作索引类型[重复]
【发布时间】:2021-08-31 09:12:48
【问题描述】:

在 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 对象,我该如何索引数组?

【问题讨论】:

    标签: arrays typescript types


    【解决方案1】:

    TypeScript 有两种基本的数字类型,primite number 和 Object 类型 Number。解释参考TypeScript: Difference between primitive types,简而言之:

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

    其实,如果你运行:

    console.log(typeof 1);
    

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

    如果您将地图更改为 number 对象的数组,您的代码将无错误地编译。

    【讨论】:

    • typeof(1) 不是必须的,typeof 1 是最常用的。不必要的括号使它看起来像一个函数调用,就像输入return(1)
    • 谢谢,去掉括号
    • "TypeScript 有两种数字类型,primite number 和 Object 类型 Number。" 还有BigInt
    • 改为“基本数字类型”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多