gpt4 book ai didi

typescript - 类型 'string' 不能用于索引类型 'T' .ts(2536)

转载 作者:行者123 更新时间:2023-12-04 12:38:17 33 4
gpt4 key购买 nike

我在 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)
}
``

关于typescript - 类型 'string' 不能用于索引类型 'T' .ts(2536),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186399/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com