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
}, {})
}
Run Code Online (Sandbox Code Playgroud)
如何在仍然返回泛型类型的同时摆脱它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)
}
``
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8679 次 |
最近记录: |