带有静态成员组件的React类的正确类型定义

时间:2018-11-30 19:50:32

标签: reactjs typescript jsx typescript-typings

我已经在npm上发布了一个React组件(用JS编写),并希望为其提供.d.ts类型文件。但是我正在努力使类型工作。这是(简化的)情况(在JS中):

class Async extends React.Component { ... }
const Pending = (props) => <div>{props.children}</div>
Async.Pending = Pending

待处理是一个功能组件,它作为Async类的静态成员公开。

现在,我对此有以下类型定义(在inputs / index.d.ts中):

declare class Async<T> extends React.Component<Props<T>, State<T>> {}
declare namespace Async {
  export function Pending<T>(props: { children?: Children<T> }): React.ReactNode
}
export default Async

Props<T>State<T>是接口。 Children<T>是类型别名。

使用此设置,我不断遇到以下错误:“类型错误:JSX元素类不支持属性,因为它不具有'props'属性。”

我可以使用以下方法使其工作:

type AsyncInterface<T> = React.ComponentClass<Props<T>, State<T>>
declare const Async: AsyncInterface<any>
export default Async

但是我看不到将Pending定义为静态成员的方法。

完整的源代码在这里:https://github.com/ghengeveld/react-async

0 个答案:

没有答案