我有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