我试图遍历对象中的函数并获取它们的返回类型以进行一些过滤,如下所示:
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我正在传递函数?
答案 0 :(得分:2)
您需要指定约束,使得T
中的ValidFunctions
的值只能是函数:
type ValidFunctions<T extends { [key: string]: (...args: any[]) => any }> = ...