【发布时间】:2019-01-30 06:40:29
【问题描述】:
我正在使用带有 Typescript 的 React 创建高阶组件 (HOC),但无法理解 Typescript 编译器返回的错误。我已经解决了我的问题,但不明白为什么会这样。
对于这里发生的事情,如果有任何指导或建议,我将不胜感激。
我的错误是:类型“{}”不可分配给类型“T”
我已经阅读了多篇关于类型解析问题的帖子,在大多数情况下,Typescript 似乎只是在做它的工作。我有一种感觉,这里就是这种情况,但是,我不明白我做错了什么。我试过弄乱类型签名,在这些情况下,它要么没有解决这个问题,要么把错误推到了引用代码上。
代码生成错误
import React, { Component, ComponentType } from 'react';
const withClass = <T extends object>(WrappedComponent: ComponentType<T>, className: string):
React.FunctionComponent<T> =>
(props: any) => (
<div className={className}>
<WrappedComponent />
</div>
);
export default withClass;
带有 Fix 的代码(注意 props 作为参数传播到被包装的组件)
import React, { Component, ComponentType } from 'react';
const withClass = <T extends object>(WrappedComponent: ComponentType<T>, className: string):
React.FunctionComponent<T> =>
(props: any) => (
<div className={className}>
<WrappedComponent {...props} />
</div>
);
export default withClass;
我希望第一段代码能够正确编译,但事实并非如此。为什么?
【问题讨论】:
标签: reactjs typescript higher-order-components