我已经在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定义为静态成员的方法。