我是打字稿的新手。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