【发布时间】:2020-01-11 09:17:11
【问题描述】:
我有一个处理一些实体并最终向它们添加属性的函数。它非常灵活,可以处理不同类型的值:属性可以分配给对象,或者如果它是一个数组,则可以分配给数组中的每个对象(实际的东西要复杂得多,不能拆分成不同的函数)。最后,它扩展了传入类型并返回具有少量属性的扩展类型。所以它看起来像这样:
function addSomeStuff<T>(data): TypeWithAddedProperty<T> {
if (Array.isArray(data)) {
return data.map(element => {
const newElement = { ...element, addedProperty: 'something' }
return newElement;
})
} else {
const newElement = { ...data, addedProperty: 'something' }
return newElement;
}
}
export type TypeWithAddedProperty<T> = T & {addedProperty: string};
所以问题是:TypeWithAddedProperty 可以是有条件的,所以它会支持那里的数组吗?现在,如果我在里面传递一个数组,我将得到 TypeWithAddedProperty<Array<T>> 而不是实际的 Array<TypeWithAddedProperty<T>>。
【问题讨论】:
标签: javascript typescript types