typescript - Typescript 在函数错误中使用泛型类型索引数组属性
问题描述
interface AllEvents {
showDialog: (dialogName: string, props: Record<string, any>) => void
loading: (isLoading: true | false) => void
}
type Events = {
[key in keyof AllEvents]: AllEvents[key][];
};
const commonEvents:Events = {
showDialog: [],
loading : [],
};
function subscribe<K extends keyof AllEvents>(eventName: K, callback: AllEvents[K]) {
let a =commonEvents[eventName]
a.push(callback); //error
}
错误来了 a.push(callback);
TS2345:“AllEvents[K]”类型的参数不可分配给“((dialogName: string, props: Record<string, any>) => void) & ((isLoading: boolean) => void)'类型的参数.
Type '((dialogName: string, props: Record<string, any>) => void) | ((isLoading: boolean) => void)' is not assignable to type '((dialogName: string, props: Record<string, any>) => void) & ((isLoading: boolean) => void)'.
Type '(dialogName: string, props: Record<string, any>) => void' is not assignable to type '((dialogName: string, props: Record<string, any>) => void) & ((isLoading: boolean) => void)'.
Type '(dialogName: string, props: Record<string, any>) => void' is not assignable to type '(isLoading: boolean) => void'.
Type 'AllEvents[K]' is not assignable to type '(dialogName: string, props: Record<string, any>) => void'.
Type '((dialogName: string, props: Record<string, any>) => void) | ((isLoading: boolean) => void)' is not assignable to type '(dialogName: string, props: Record<string, any>) => void'.
Type '(isLoading: boolean) => void' is not assignable to type '(dialogName: string, props: Record<string, any>) => void'.
Types of parameters 'isLoading' and 'dialogName' are incompatible.
Type 'string' is not assignable to type 'boolean'.
commonEvents[eventName]
可以showDialog
和它的类型应该是 ((dialogName: string, props: Record<string, any>) => void)[]
什么问题?
解决方案
推荐阅读
- wordpress - 如何更改 WordPress 中 Gutenberg 块的默认 HTML 输出?
- c# - ASP.NET Microsoft OWIN 令牌变得无效
- cookies - document.cookie 在模板文字中看不到嵌入的表达式
- odoo - 如何让 Odoo 网站在标题中搜索?
- python - 如何更改 Dash 应用程序的颜色?
- python - 使用 Python 从 azure blob 存储下载文件(csv、excel)
- python - 为什么我放入 library.zip pygame 后找不到 freesansbold.ttf
- java - 单击按钮时更新类变量
- scala - 从 HDFS 读取文件,Scala Spark
- redirect - 春季安全奇怪的重定向