injectIntl​​期望带有包含`intl'的道具的类

时间:2018-11-08 21:29:54

标签: typescript react-intl

我遇到类React.ComponentClass类型的类。

我的TypeScript版本是2.4.2-

我的组件是这样的:

import * as React from 'react';
import { injectIntl, InjectedIntlProps } from 'react-intl';

interface IBlahProps extends InjectedIntlProps {

}

class BlahBase extends React.Component<IBlahProps> {

}

const Blah = injectIntl(BlahBase);

export default Blah;

一切正常。

但是当我像这样消费该组件时:

render() {
  return <Blah />
}

<Blah />下划线表示截图如下:

  

[ts]类型“ {}”不可分配给类型

     

“只读”。类型“ {}”中缺少属性“ intl”。

     

导入Blah

我如何理解这种情况,以及如何解决?我不想做<Blah intl={intl} />

index.d.ts的{​​{1}}看起来像这样:

injectIntl

我可以通过将接口从扩展function injectIntl<P>(component: ComponentConstructor<P & InjectedIntlProps>, options?: InjectIntlConfig): React.ComponentClass<P> & { WrappedComponent: ComponentConstructor<P & InjectedIntlProps> }; 更改为以下类型来解决此问题:

InjectedIntlProps

但是我不知道为什么扩展type IBlahProps = InjectedIntlProps & { } 不能解决问题。

enter image description here

1 个答案:

答案 0 :(得分:1)

也许有错字?

我刚刚使用打字稿2.9.2测试了您的示例,对我来说效果很好:

import { injectIntl, InjectedIntl } from "react-intl";

interface IBlahProps  {
  intl: InjectedIntl;
}

class BlahBase extends React.Component<IBlahProps> {

}

const Blah = injectIntl(BlahBase);

请注意const Blah而不是class Blah

enter image description here