[英]Using typescript ReturnType with keyof and iterated keys of generic type
我试图遍历对象中的函数并获取它们的返回类型以进行一些过滤,如下所示:
export const StorageActions = {
addFile: () => ({ type: 'ADD_FILE' }),
deleteFile: () => {
return () => {
return null;
};
},
};
type StorageActionsTypes = typeof StorageActions;
type ValidFunctions<T> = Pick<T, {
[K in keyof T]: ReturnType<T[K]> extends { type: any } ? K : never;
}[keyof T]>;
type functions = ValidFunctions<StorageActionsTypes>;
上面的代码将显示以下错误:
类型'T [K]'不满足约束'(... args:any [])=> any'。
如错误所述,ReturnType需要一个函数,对吗? 还是我在这里想念东西?
如何告诉ReturnType我正在传递函数?
您需要指定约束,即ValidFunctions
的T
值只能是函数:
type ValidFunctions<T extends { [key: string]: (...args: any[]) => any }> = ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.