【发布时间】:2020-09-12 21:47:23
【问题描述】:
我正在尝试创建一个名为 addToCache 的字符串构建函数,该函数的参数由名为 Payloads 的接口定义
因此,基于从名为 MyStringsTest 的 enum 注册的字符串的键码,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'我试图理解为什么但我找不到原因
【问题讨论】:
标签: javascript typescript types lookup