我有2个功能修改列表。该列表是对象的字段。这个对象有很多列表,我不想几次写同一个代码。我需要可重用的功能。Typescript - 摆脱我的功能样板
现在看起来象下面这样:
setLists(): void {
if (this.product.orders !== null) {
this.orders = this.product.orders.join(', ');
} else {
this.orders = '';
}
if (this.product.relatedProducts !== null) {
this.relatedProducts = this.product.relatedProducts.join(', ');
} else {
this.relatedProducts = '';
}
}
这里只有2场,但实际上产品具有名单。我不想为每个列表重复相同的操作。
二样板函数看起来象下面这样:
updateProductLists(): void {
let splittedOrders: string[] = this.orders.split(",");
splittedOrders = splittedOrders.map(o => o.trim());
this.product.orders = new Array<string>();
this.project.orders.push(...splittedOrders);
let splittedRelatedProducts: string[] = this.relatedProducts.split(",");
splittedRelatedProducts = splittedRelatedProducts.map(r => r.trim());
this.product.relatedProducts = new Array<string>();
this.product.relatedProducts.push(...splittedRelatedProducts);
}
注意:如果对象的属性是键入的(它们应该在TypeScript中,但似乎不是从问题来判断),我相信会有一个试图将一个字符串的值赋给之前是一个数组的变量的问题(反之亦然)。 – Vintr
@Vintr你在哪里看到用于字符串和数组值的相同变量?难道是你将'this.relatedProducts'与'this.product.relatedProducts'混合?或者我错过了什么? –
的确我是。这种令人困惑的命名。 :) – Vintr