重用流类型类声明

时间:2018-11-09 11:57:57

标签: flowtype

如果我在给定的模块中声明了类C,那么如何在其他模块中重新使用它呢?

例如,一个模块声明并使用以下内容:

declare class IRecord<T: Object> {
  constructor(irecordValues: $Shape<T>): void;

  inspect(): string;
}

但是,在一个单独的模块中,我想做的等同于:

import type { IRecord } from 'other-module';

declare class IRecordState<T: Object, J: Object> extends IRecord<{
}

不幸的是,导出上面的类声明是非法的,并且我无法创建实际的(IRecord)类,因为它作为无类型实体存在。是创建.flow.js模块的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

我通过将类类型声明移到单独的.js.flow模块中并将其放置在专门用于与流类型相关的声明的目录中来解决此问题。还必须调整流的配置文件,以指示它包括这些额外的声明。配置流程非常简单,需要使用以下设置在项目的根目录中创建一个.flowconfig文件:

[include]
flow-typed

...,其中flow-typed是包含流类型声明的目录。

现在在整个项目中都可以使用类声明,这使得重用它成为可能,但是不希望该声明(以及可能添加的其他声明)在全球范围内存在。