2

我正在尝试遍历对象中的函数并获取它们的返回类型以进行一些过滤,如下所示:

 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 我正在传递一个函数?

4

1 回答 1

3

您需要指定Tinside的值ValidFunctions只能是函数的约束:

type ValidFunctions<T extends { [key: string]: (...args: any[]) => any }> = ...
于 2018-12-19T16:50:51.443 回答