开发者问题收集

无法读取未定义的属性“list_ids”

2017-05-22
55

我是 Typescript 新手,不知道如何解决一个小问题。 我声明了一个新类,然后我想分配从 apiCall 获得的值。但我遇到的问题是:

Cannot read property 'list_ids' of undefined

在我的类中,我初始化了对象,如果我想将其声明为空,则会出现错误。 我该如何解决这个问题?如果我可以从一开始就将其声明为空,然后分配它,我想那就太好了!

在这里我发布了我的类的代码:

export class MyClass {
 name: string 
 op: string 
 field_id: string
 comparsion_values: {
  values: [
    string
  ],
  list_ids: [number] 
  field_ids: [
    string 
  ],
  velocities: [
    string 
  ],
  prices: [
    {
     amount: 0 
     currency: string 
    }
  ]
 }
}

我将其初始化为: myObjectClass= new myClass;

当我尝试在某些数组中进行推送时,问题出现了。

非常感谢。

1个回答

问题 1:

根据命名,我假设您打算将 list_idsfield_ids 作为数组,但目前它们被类型化为 元组

问题 2:

您没有初始化 comparsion_values 属性。您只是在定义属性的类型。

您可以在接口中定义 comparsion_values 的类型(以内联方式定义它没有错,但看起来很乱),并在构造函数中使用空数组初始化它,如下所示:

interface ComparisonValues {
    values: Array<string>, // Or string[] would work too
    list_ids: Array<number>
    field_ids: Array<string>,
    velocities: Array<string>,
    prices: Array<{
        amount: number
        currency: string
    }>
}

export class MyClass {
    name: string
    op: string
    field_id: string
    comparsion_values: ComparisonValues
    constructor() {
        this.comparsion_values = {
            values: [],
            list_ids: [],
            field_ids: [],
            velocities: [],
            prices: []
        }
    }
}
Saravana
2017-05-22