我在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
)。
2条答案
按热度按时间xv8emn3q1#
您需要手动为
keys
以及result[key]
和{}
设置正确的类型,因为typescript无法正确地自动识别它们。doinxwow2#
对于那些有类似挑战的人来说,转换一个
Record<string, string>
而不是Record<string, number>
,你需要一个额外的as
来赋值给特定的键。如果返回一个新的对象而不是修改,则可以避免额外的
as
:如果你是用承诺来转变的: