javascript - 如何将对象属性设置在不同的地方?

标签 javascript angular typescript typescript-typings

我有一些模型,可以说:

export interface Car {
  driverId: string;
  driverName: string;
  color: string;
}

在我的函数中,我想从这个模型返回一个对象数组,但是我只能在这个函数中发生几次异步调用之后构建它,所以我想声明这个模型的一个空数组并分配我拥有的相关属性:

  public getListOfCarObjects(): Car[]  {
    let listOfCars: Car[] = [];
    self._serviceOne.getIds().subscribe(
      (res: DriversInfo) => {
        res.ids.map((id: string, idIndex: number) => {
          listOfCars[idIndex].driverId = id;
          // more stuff api calls below and building the object
          ...
  }

但我收到此错误:

ERROR TypeError: Cannot set property 'driverId' of undefined

怎么样,我应该这样做吗?

谢谢!!

最佳答案

您必须在您引用的索引处创建对象实例。您可以在收到数据时创建它,方法是推送值或按索引设置:

listOfCars.push({ driverId: id, dirverName: "", color: "" });
listOfCars[idIndex] = { driverId: id, dirverName: "", color: "" };

由于您的界面指定需要所有属性,因此您必须在创建新对象时指定所有属性,就像我上面所做的那样。如果您想仅使用 anid 创建汽车,您可以将其余属性标记为可选:

export interface Car {
  driverId: string;
  driverName?: string;
  color?: string;
}

关于javascript - 如何将对象属性设置在不同的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164098/

相关文章:

angular - 如何获得父组件注入(inject)器?

typescript 歧视联合缩小不起作用

javascript - office-js:未捕获类型错误:window.external.GetContext 不是函数

javascript - 根据变量的值更改 prop 值

javascript - Chrome 上下文菜单子(monad)项功能同时启动

angular - typescript /Angular 10 : component with generic union type

typescript - vue-property-decorator @Prop 如何使用接口(interface)定义数组

javascript - 如何获取 html 页面中所有 p 和 h 标签的值,不包括所有其他标签

javascript - 应该如何声明一个空的时间戳变量,以便成为一个全局变量,以便我们稍后可以给它一个值?

javascript - 我收到以下错误 : ERROR TypeError: Cannot read property 'invalid' of undefined