如何使用单独的声明文件从外部模块声明React.Component类型?

时间:2016-08-13 12:30:31

标签: javascript reactjs flowtype

说,有一个外部模块导出了一个React组件。该模块没有流程声明。我想声明它以启用流类型检查。

例如,该模块的定义如下:

import React from 'react'

class External extends React.Component {
  static propTypes = {
    name: React.PropTypes.string.isRequired
  }
  render() {
    return <div></div>
  }
}

如果我写了我的自我(内部模块)Flowtype将能够检测到丢失 道具。但是,因为External组件是从外部模块导出的。 Flow不进行类型检查。所以,我需要创建单独的类型声明 该模块。

我试过了:

// ./interfaces/the-external-module.js.flow

declare module "the-external-module" {
  declare export var External: React.Component;
}

当然它不起作用,因为React不在范围内。那么,我怎么能 在单独的类型声明文件中将External声明为React.Component

1 个答案:

答案 0 :(得分:1)

根据部分official definitions,使用React$Component(在来源here中定义); e.g。

declare module "the-external-module" {
  declare export var External: React$Component;
}