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

How to declare React.Component type from external module with separate declaration file?

比如说,有一个导出 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

根据一些 official definitions, use React$Component (defined in the source here);例如

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