为什么此代码说明类型“数字”不能分配给类型“从不”

TSR

我正在尝试创建一个名为的字符串构建函数addToCache,该函数的参数由一个名为的接口定义Payloads

因此,基于从被enum调用方注册的字符串的键代码MyStringsTest,Typescript应该使用该键代码执行类型查找。

export enum MyStringsTest {
    DEPART_IN_X_MINUTE='DEPART_IN_X_MINUTE',
    A_DRIVER_IS_ASKING_FOR='A_DRIVER_IS_ASKING_FOR',
}
export interface Payloads {
    [MyStringsTest.DEPART_IN_X_MINUTE]: number,
    [MyStringsTest.A_DRIVER_IS_ASKING_FOR]: string,
}
const cache:{ [K in keyof Payloads]?: (payload: Payloads[K]) => string } = {}
function addToCache<K extends keyof Payloads>(code: K, cb: ((payload: Payloads[K]) => string)): void{
    cache[code] = cb // I have the error here Type 'number' is not assignable to type 'never'
}
addToCache(MyStringsTest.DEPART_IN_X_MINUTE, (data) => `Depart in ${data} minutes!`);
addToCache(MyStringsTest.A_DRIVER_IS_ASKING_FOR, (data) => `a driver is asking for ${data}`);

看起来用法可以使用,但是编译器显示此错误

Type 'number' is not assignable to type 'never' 我试图了解原因,但找不到原因

这是操场

普里坦·卡丹(Pritam Kadam)

通过为缓存创建单独的类型别名来帮助打字稿就可以了!

export enum MyStringsTest {
  DEPART_IN_X_MINUTE = 'DEPART_IN_X_MINUTE',
  A_DRIVER_IS_ASKING_FOR = 'A_DRIVER_IS_ASKING_FOR'
}
export interface Payloads {
  [MyStringsTest.DEPART_IN_X_MINUTE]: number
  [MyStringsTest.A_DRIVER_IS_ASKING_FOR]: string
}

type Catch = {
  [K in keyof Payloads]?: (payload: Payloads[K]) => string
}

const cache: Catch = {}
function addToCache<K extends keyof Catch>(code: K, cb: Catch[K]): void {
  cache[code] = cb
}
addToCache(MyStringsTest.DEPART_IN_X_MINUTE, (data) => `Depart in ${data} minutes!`)
addToCache(MyStringsTest.A_DRIVER_IS_ASKING_FOR, (data) => `a driver is asking for ${data}`)

BDW您真的需要枚举吗,您可以完全按照以下说明完全消除它

export interface Payloads {
  DEPART_IN_X_MINUTE: number
  A_DRIVER_IS_ASKING_FOR: string
}

type Catch = {
  [K in keyof Payloads]?: (payload: Payloads[K]) => string
}

const cache: Catch = {}
function addToCache<K extends keyof Catch>(code: K, cb: Catch[K]): void {
  cache[code] = cb
}

addToCache('DEPART_IN_X_MINUTE', (data) => `Depart in ${data} minutes!`)
addToCache('A_DRIVER_IS_ASKING_FOR', (data) => `a driver is asking for ${data}`)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

输入'string | 数字”不能分配给“从不”类型

来自分类Dev

为什么子类类型不能分配给类型'this'?

来自分类Dev

打字稿错误::类型'数字'不能分配给类型'从不'

来自分类Dev

类型'string |的Typescript错误参数 数字”不能分配给“从不”类型的参数

来自分类Dev

类型...不能分配给'从不'类型。(2322)

来自分类Dev

Typescript编译器永远不会错误:键入'string | 数字”不能分配给“从不”类型。类型“字符串”不可分配为类型“从不”

来自分类Dev

为什么不能将原始类型分配给参数化类型?(Java)

来自分类Dev

为什么不能将类型SFC <AnchorProps>分配给类型SFC <{}>?

来自分类Dev

类型'{}'不能分配给类型'()=>

来自分类Dev

类型“ any”的参数不能分配给“从不”类型的参数打字稿解决方案

来自分类Dev

为什么不能将方法引用直接分配给Object类型的变量?

来自分类Dev

为什么不能将Nothing分配给Unit类型的变量?

来自分类Dev

为什么不能将Nothing分配给Unit类型的变量?

来自分类Dev

打字稿错误:无法将“数字”类型分配给“从不”类型

来自分类Dev

为什么出现此错误:无法将类型“ const int *”的值分配给类型“ int *”的实体?

来自分类Dev

类型“ any []”不可分配给类型“从不”

来自分类Dev

为什么我不能将类型的值分配给实现带有接收者类型指针的方法的接口?

来自分类Dev

为什么(void **)类型可以分配给(void *)或(int *)?

来自分类Dev

运行单元测试时,“ TS2322:类型'超时'不能分配给类型'数字'”

来自分类Dev

“数字”类型的参数不能分配给 angular2 中“字符串”类型的参数。

来自分类Dev

TypeScript错误::类型'{auth:IAuthState; 错误:IErrorState; }'不能分配给类型'{auth:never; 错误:从不;}'。ts(2322)

来自分类Dev

TypeScript:“数字| 未定义”不能分配给“数字”类型的参数

来自分类Dev

为什么我们不能将 lambda 表达式直接分配给 Object 类型的引用变量?

来自分类Dev

从不兼容类型double分配给NSNumber

来自分类Dev

从不兼容类型'int(^ __ strong)(void)'分配给'int'

来自分类Dev

如何禁用从不兼容类型警告分配给..?

来自分类Dev

参数类型“ CheckIn”不能分配给参数类型“()-> CheckIn”

来自分类Dev

参数类型“ A”不能分配给类型“ B”吗?

来自分类Dev

参数类型不能分配给参数类型,应为

Related 相关文章

  1. 1

    输入'string | 数字”不能分配给“从不”类型

  2. 2

    为什么子类类型不能分配给类型'this'?

  3. 3

    打字稿错误::类型'数字'不能分配给类型'从不'

  4. 4

    类型'string |的Typescript错误参数 数字”不能分配给“从不”类型的参数

  5. 5

    类型...不能分配给'从不'类型。(2322)

  6. 6

    Typescript编译器永远不会错误:键入'string | 数字”不能分配给“从不”类型。类型“字符串”不可分配为类型“从不”

  7. 7

    为什么不能将原始类型分配给参数化类型?(Java)

  8. 8

    为什么不能将类型SFC <AnchorProps>分配给类型SFC <{}>?

  9. 9

    类型'{}'不能分配给类型'()=>

  10. 10

    类型“ any”的参数不能分配给“从不”类型的参数打字稿解决方案

  11. 11

    为什么不能将方法引用直接分配给Object类型的变量?

  12. 12

    为什么不能将Nothing分配给Unit类型的变量?

  13. 13

    为什么不能将Nothing分配给Unit类型的变量?

  14. 14

    打字稿错误:无法将“数字”类型分配给“从不”类型

  15. 15

    为什么出现此错误:无法将类型“ const int *”的值分配给类型“ int *”的实体?

  16. 16

    类型“ any []”不可分配给类型“从不”

  17. 17

    为什么我不能将类型的值分配给实现带有接收者类型指针的方法的接口?

  18. 18

    为什么(void **)类型可以分配给(void *)或(int *)?

  19. 19

    运行单元测试时,“ TS2322:类型'超时'不能分配给类型'数字'”

  20. 20

    “数字”类型的参数不能分配给 angular2 中“字符串”类型的参数。

  21. 21

    TypeScript错误::类型'{auth:IAuthState; 错误:IErrorState; }'不能分配给类型'{auth:never; 错误:从不;}'。ts(2322)

  22. 22

    TypeScript:“数字| 未定义”不能分配给“数字”类型的参数

  23. 23

    为什么我们不能将 lambda 表达式直接分配给 Object 类型的引用变量?

  24. 24

    从不兼容类型double分配给NSNumber

  25. 25

    从不兼容类型'int(^ __ strong)(void)'分配给'int'

  26. 26

    如何禁用从不兼容类型警告分配给..?

  27. 27

    参数类型“ CheckIn”不能分配给参数类型“()-> CheckIn”

  28. 28

    参数类型“ A”不能分配给类型“ B”吗?

  29. 29

    参数类型不能分配给参数类型,应为

热门标签

归档