类型错误:无法读取未定义的属性“时间”

时间:2020-12-30 16:19:26

标签: javascript node.js typescript

我有类型错误。我的变量在使用 node.js 运行时创建了这个错误。我的变量如下。如何正确描述我的变量?

let allDevices = {
        1: {
            time: []
        },
        2: {
            time: []
        },
        3: {
            time: []
        }
}

1 个答案:

答案 0 :(得分:1)

我猜您正在尝试使用 allDevices.1.time 来获取上述错误消息。对于数字对象键,您需要使用 [] 而不是 . 符号来引用编号的对象键:

let allDevices = {
  1: {
    time: []
  },
  2: {
    time: []
  },
  3: {
    time: []
  }
}

console.log(allDevices[1].time) // or allDevices['1'].time

不过,您可能不想要那个对象结构; allDevices 可能应该只是一个数组,因此您不需要手动管理索引号。你可以用同样的方式访问它(但请注意数组是零索引的):

let allDevices = [
  {
    time: []
  },
  {
    time: []
  },
  {
    time: []
  }
]

console.log(allDevices[0].time) // here, allDevices['1'] would not work; the index must be a number

如果您已经在使用括号表示法但仍然收到“未定义”错误,请在尝试访问数据之前检查以确保数据存在;如果 allDevices 是由异步设置的,则您需要等到该异步调用返回。