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

加勒特

我得到上述错误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以便使用函数仍能接收正确的类型(而不是简单地更改TDataType)。

埃里亚斯·舍布洛夫斯基(Elias Schablowski)

您需要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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串不能用于索引类型“ T”

来自分类Dev

Typescript:类型'undefined'不能用作索引类型.ts(2538)

来自分类Dev

元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

来自分类Dev

Typescript错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

来自分类Dev

TypeScript:隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

来自分类Dev

类型“ N [P]”不能用于索引类型“ IComponents <N>”

来自分类Dev

带有React> Element的Typescript隐式具有'any'类型,因为类型'string'的表达式不能用于索引

来自分类Dev

类型'undefined'不能用作索引类型

来自分类Dev

类型“{}”不能用作索引类型

来自分类Dev

类型“X”不能用作索引类型

来自分类Dev

如何在不忽略TypeScript警告的情况下测试Object是否具有键值:'string'不能用于索引类型?

来自分类Dev

不能用于初始化const std :: string类型的实体*

来自分类Dev

类型“ T”不能用作通用类型或方法中的类型参数“ T”

来自分类Dev

静态成员不能用于类型的实例

来自分类Dev

实例成员...不能用于类型 ViewController

来自分类Dev

元素隐式地具有“ any”类型,因为类型“ any”的表达式不能用于索引类型

来自分类Dev

元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引类型A

来自分类Dev

类型 'any[]' 不能用作索引类型 Angular 构建

来自分类Dev

打字稿:“字符串”不能用于索引复杂对象上的类型

来自分类Dev

在这些情况下,“ K不能用于索引类型”的原因

来自分类Dev

错误TS2345:类型'Map <String,boolean>'的参数不能被类型'IterableShim <[String,boolean]>'的参数触发

来自分类Dev

我该如何解决这个“不能用类型为‘UInt32’的索引为‘[[String]]’类型的值添加下标”

来自分类Dev

类型'string'不能分配给类型'“ x” | “ y” | “ z””。TS2345

来自分类Dev

ts猫鼬不能将'string'类型分配给'Condition <..>'类型

来自分类Dev

该类型不能用作通用类型或方法'BaseController <T>'中的类型参数'T'。没有隐式引用

来自分类Dev

在类型[[] |上找不到参数类型为'string'的索引签名。iCommits'.ts(7053)

来自分类Dev

为什么不能用索引类型推断写入对象属性

来自分类Dev

该类型不能用作通用类型或方法中的类型“ T”。没有从到的隐式引用转换

来自分类Dev

实例成员不能用于自定义类的类型

Related 相关文章

  1. 1

    字符串不能用于索引类型“ T”

  2. 2

    Typescript:类型'undefined'不能用作索引类型.ts(2538)

  3. 3

    元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

  4. 4

    Typescript错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

  5. 5

    TypeScript:隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

  6. 6

    类型“ N [P]”不能用于索引类型“ IComponents <N>”

  7. 7

    带有React> Element的Typescript隐式具有'any'类型,因为类型'string'的表达式不能用于索引

  8. 8

    类型'undefined'不能用作索引类型

  9. 9

    类型“{}”不能用作索引类型

  10. 10

    类型“X”不能用作索引类型

  11. 11

    如何在不忽略TypeScript警告的情况下测试Object是否具有键值:'string'不能用于索引类型?

  12. 12

    不能用于初始化const std :: string类型的实体*

  13. 13

    类型“ T”不能用作通用类型或方法中的类型参数“ T”

  14. 14

    静态成员不能用于类型的实例

  15. 15

    实例成员...不能用于类型 ViewController

  16. 16

    元素隐式地具有“ any”类型,因为类型“ any”的表达式不能用于索引类型

  17. 17

    元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引类型A

  18. 18

    类型 'any[]' 不能用作索引类型 Angular 构建

  19. 19

    打字稿:“字符串”不能用于索引复杂对象上的类型

  20. 20

    在这些情况下,“ K不能用于索引类型”的原因

  21. 21

    错误TS2345:类型'Map <String,boolean>'的参数不能被类型'IterableShim <[String,boolean]>'的参数触发

  22. 22

    我该如何解决这个“不能用类型为‘UInt32’的索引为‘[[String]]’类型的值添加下标”

  23. 23

    类型'string'不能分配给类型'“ x” | “ y” | “ z””。TS2345

  24. 24

    ts猫鼬不能将'string'类型分配给'Condition <..>'类型

  25. 25

    该类型不能用作通用类型或方法'BaseController <T>'中的类型参数'T'。没有隐式引用

  26. 26

    在类型[[] |上找不到参数类型为'string'的索引签名。iCommits'.ts(7053)

  27. 27

    为什么不能用索引类型推断写入对象属性

  28. 28

    该类型不能用作通用类型或方法中的类型“ T”。没有从到的隐式引用转换

  29. 29

    实例成员不能用于自定义类的类型

热门标签

归档