我得到上述错误result[key]
的
type DataType = Record<string, number>
export function getDifference<T extends DataType>(data1: T, data2: T): T {
const keys = Object.keys(data1)
return keys.reduce<T>((result, key) => {
result[key] = data1[key] - data2[key]
return result
}, {})
}
我如何在仍然返回泛型类型的同时摆脱它,T
以便使用函数仍能接收正确的类型(而不是简单地更改T
为DataType
)。
您需要keys
同时为result[key]
和设置正确的类型,{}
因为typescript无法自动正确识别它们。
type DataType = Record<string, number>
export function getDifference<T extends DataType>(data1: T, data2: T): T {
const keys: (keyof T)[] = Object.keys(data1)
return keys.reduce<T>((result, key) => {
if(typeof data1[key] === "number" && typeof data2[key]) { // Safeguard against object, array, etc. properties
result[key] = data1[key] - data2[key] as T[keyof T]
}
return result
}, {} as T)
}
``
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句