对复杂数据元素的引用



我有一个由类表示的模型。

例如,汽车的模型:

export class Car
{
public name : string;
public color: string;
public power : number;
public service : boolean;
}

汽车存储在列表中。

cars : Array <Car>;

现在我想要一个改变汽车一个属性的函数。

例如,第1辆车的颜色或第2辆车的名称。

引用汽车及其属性作为该函数的参数的最佳方法是什么?

据我所知,例如

cars [0].name 

将在我的函数中传递值而不是引用。

我可以通过数组的索引指向汽车。对于该属性,我可以获取一个需要解释的字符串。但我认为这不是很聪明。

有什么更好的主意吗?

高级类型救援(特别是索引类型(! 您可以通过类型安全的方式修改动态属性:

interface Car {
name: string;
color: string;
power: number;
service: boolean;
}
class CarContainer {
public cars: Car[] = [];
updateCar<K extends keyof Car, V extends Car[K]>(index: number, key: K, value: V) {
let selectedCar = this.cars[index];
if (selectedCar) {
selectedCar[key] = value;
} 
}
}

let c = new CarContainer();
c.cars.push({
name: "Old Jalopy",
color: "black",
power: 0,
service: false,
});
// Time for a power upgrade!
c.updateCar(0, "name", "Tesla Roadster");
c.updateCar(0, "power", 100000000);

最新更新