这个错误的原因是什么?我该如何解决?

时间:2020-12-18 20:16:10

标签: angular typescript typeerror

我想将 'universitiesListFromDB' 类型为 'Uni.model.ts''obj' 变量推送到 'universitiesListFromDB' 这只是一个相同类型的数组。

for (let i = 0; i < responseData.length; i++) {
  var matchedFlag: Boolean = false;
  if (this.universitiesListFromDB.length <= 0) {
    for (
      let j = 0;
      j < this.universitiesListFromDB.length && !matchedFlag;
      j++
    ) {
      if (
        this.universitiesListFromDB[j].uniName ==
        responseData[i].UniversityNameOfUser
      ) {
        matchedFlag = true;
      }
    }
    if (matchedFlag == false) {
      var obj: Uni;
      obj.uniName = responseData[i].UniversityNameOfUser;    <<----ERROR HERE
      this.universitiesListFromDB.push(obj);
    }
    //check MatchedFlag, if false then assign
  } else {
    this.universitiesListFromDB[0].uniName =
      responseData[i].UniversityNameOfUser;
  }
}

错误:

core.js:6006 ERROR TypeError: Cannot set property 'uniName' of undefined
at HomepageService.initiallizeRemainings (homepage.service.ts:86)
at SafeSubscriber._next (homepage.service.ts:55)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
at SafeSubscriber.next (Subscriber.js:122)
at Subscriber._next (Subscriber.js:72)
at Subscriber.next (Subscriber.js:49)
at MapSubscriber._next (map.js:35)
at MapSubscriber.next (Subscriber.js:49)
at FilterSubscriber._next (filter.js:33)
at FilterSubscriber.next (Subscriber.js:49)

以下是我想要将 'obj' 推入但无法实现的数组。有人可以指导吗?

universitiesListFromDB: Uni[] = []

该数组的类型与变量 'obj' 相同的 Uni.model.ts 类型

export interface Uni {
uniName: String;
}

1 个答案:

答案 0 :(得分:0)

您只声明了 obj,但没有对其进行初始化。

改变

var obj: Uni;
obj.uniName = responseData[i].UniversityNameOfUser;

let obj: Uni = { uniName: responseData[i].UniversityNameOfUser };

注意:
避免使用 var。改用 const(不可变)或 let(可变)。