如何为一组匹配文件声明导出类型?

时间:2016-12-01 14:31:23

标签: javascript flowtype

我有一个文件夹./plugins。插件具有以下界面:

type PluginType = () => Promise<(ad: AdType) => TargetingParameterType>;

为了使用Flow,我需要将PluginType导入每个插件脚本并声明导出类型,例如这就是我现在正在做的事情:

import type {
  PluginType
} from './types';

const myPlugin: PluginType = async () => {
  return (ad) => {
    return {};
  };
};

export default myPlugin;

这种方法的问题是:

  1. 需要创建一个中间变量(我找不到内联方式来注释export default类型)
  2. 要求此注释包含在每个./plugins/*.js文件中。
  3. 有没有办法配置Flow将PluginType类型应用于./plugins/*.js文件夹中的所有文件,而无需为每个文件添加类型声明?

1 个答案:

答案 0 :(得分:2)

您可以使用".flowconfig-style" declarations创建项目范围的类型声明。在SO_TIMEOUT中,添加:

.flowconfig

然后创建目录[libs] decls/ ,并在其中创建一个名为decls的文件,其中包含:

plugins.js

您可能还需要在此文件中包含declare type PluginType = () => Promise<(ad: AdType) => TargetingParameterType>; 所依赖的类型。

According to the documentation

  

声明类型同样有用。与其他声明一样,类型声明也可以对项目中的所有模块可见。

为避免创建中间变量,您可以使用typecast语法:

PluginType