【问题标题】:Using parameters as part of an object property chain使用参数作为对象属性链的一部分
【发布时间】:2021-04-11 01:14:51
【问题描述】:

Angular 中,我的接口看起来像这样(这不是我的代码):

export interface Vehicles {
    id: number;
    cars: Car;
    trucks: Truck;
}

Export interface Car {
    make: number;
    model: number;
}

Export interface Truck {
    make: number;
    model: number;
}

我的服务包含两个函数 doCarMath()doTruckMath(),它们根据 API 的返回值进行计算:

vehicleNumbers: Vehicles;

constructor(private http: HttpClient) {
    this.vehicleNumbers = {};
}

callID(id: string): Observable<Vehicles>{
    return this.http.get<Vehicles>(this.myURL+`/${id}`);
}

getMyCarNumbers(id) {
    this.callID(id).subscribe(results =>
    {
        this.vehicleNumbers = results;
    }
}

doCarMath(): number {
    return this.vehicleNumbers.car.make; / this.vehicleNumbers.car.model;
}

doTruckMath(): number {
    return this.vehicleNumbers.truck.make; / this.vehicleNumbers.truck.model;
}

我想将doCarMath()doTruckMath() 组合成一个doMath() 函数,方法是传入一个参数来指定cartruck,如下所示:

doMath(p_vehicle): number {
    return this.vehicleNumbers.p_vehicle.make/this.vehicleNumbers.p_vehicle.model; // can p_vehicle be used here?
}

如何在这里使用参数p_vehicle?以上为p_vehicle参数抛出了intellisense错误,但是我本地没有代码,无法分享错误。

【问题讨论】:

标签: javascript angular typescript parameters arguments


【解决方案1】:

我认为这样就可以了:

doMath(p_vehicle): number {
    return this.vehicleNumbers[p_vehicle].make/this.vehicleNumbers[p_vehicle].model; 
}

然后调用该函数将是:

doMath('car'); // or this.doMath('car');
doMath('truck'); // or this.doMath('truck');

【讨论】:

  • 谢谢!您可以多次堆叠bracket notation 吗?最初属性看起来像return this.vehicleNumbers.car.carMake; / this.vehicleNumbers.car.carModel;。我也可以像这样传递参数[p_vehicleMake][p_vehicleModel] 来访问carMakecarModeldoMath(p_vehicle, p_vehicleMake, p_vehicleModel): number { return this.vehicleNumbers[p_vehicle].[p_vehicleMake]/this.vehicleNumbers[p_vehicle].[p_vehicleModel]; } 吗?
  • 是的,你可以,但要小心:NO '.'括号之间的(点) ([a][b] >> is >> a.b)
猜你喜欢
  • 1970-01-01
  • 2016-04-09
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多