我是打字稿的新手。typescript如何將兩個對象組合成一個數組
我有兩個學生類的對象。可以是AStudent和BStudent 現在我想有返回包含如果它們不爲空
如果兩者不爲空的組合陣列的方法,陣列將是[AStudent,BStudent]; IF AStudent不爲空並且BStudent是null,數組將會是[AStudent]
如何在打字稿中實現這個?
感謝
我是打字稿的新手。typescript如何將兩個對象組合成一個數組
我有兩個學生類的對象。可以是AStudent和BStudent 現在我想有返回包含如果它們不爲空
如果兩者不爲空的組合陣列的方法,陣列將是[AStudent,BStudent]; IF AStudent不爲空並且BStudent是null,數組將會是[AStudent]
如何在打字稿中實現這個?
感謝
combineTwoObject(obj1 = null, obj2 = null) {
let objArray = [];
if(obj1 != null)
objArray.push(obj1);
if(obj2 != null)
objArray.push(obj2);
return objArray;
}
您可以使用一個很抽象的方法來實現這一目標,這將滿足您的兩個首發的情況下,學生,而且還允許您使用其他類型的功能以及其他大小的集合。我也冒着處理null
和undefined
的自由。
function definedObjects<T>(...obj: T[]): T[]{
return obj.filter(s => !!s);
}
interface Student {
name: string;
}
var studentA: Student = { name: 'Steve' };
var studentB: Student = { name: 'Jocket' };
var studentC: Student; // undefined
var studentD: Student = null;
const result = definedObjects(studentA, studentB, studentC, studentD);
你失去了一些靈活性,但另一種方法是用一個不接受undefined
擴展Array類。就像這樣:
export class NoUndefinedArray<T> extends Array<T> {
constructor() {
super();
}
push(item: T) {
if (item !== undefined) {
super(push);
}
}
concat(item: T | T[]) {
const arr = [].concat(item).filter(i => i !== undefined);
return super(arr);
}
}
真的很大程度上取決於您如何獲取對象,代碼示例或最小可驗證示例是首選。 –
'let arr = []; if(AStudent!= null)arr.push(AStuden); ...' - 重複'BStudent',返回。 – tymeJV
我希望一些打字稿的解決方案,而不是普通的,如果其他 – Jocket