繁体   English   中英

打字稿:高阶组件的类型定义

[英]Typescript: Type definitions for Higher Order Components

我正在将一个项目过渡到Typescript,并且遇到了问题。 我使用第三方库react-async-script-loader ,所以我正在为其编写类型定义文件。 该库导出了一个更高阶的组件,但是我在类型定义文件中表达它时遇到了麻烦。

这是我现在拥有的文件:

declare module 'react-async-script-loader' {
  import { Component } from 'react';

  class ElementClass extends Component<any, any> {}

  interface ClassDecorator {
    (component: ElementClass): ElementClass;
  }

  function scriptLoader(url: string): ClassDecorator;

  export default scriptLoader;
}

我正在调用该函数是这样的:

import * as scriptLoader from 'react-async-script-loader';

...

export default scriptLoader(url)(MyComponent);

但是,在export default语句时出现此错误:

error TS2349: Cannot invoke an expression whose type lacks a call signature.

我不太了解是什么原因造成的,因为我导出的函数需要一个字符串,并且似乎正在返回一个带有组件并输出组件的函数。

scriptLoader被导出为default导出,但是您正在使用名称空间导入进行导入。

尝试将其更改为default导入, 如docs中所示

import scriptLoader from "react-async-script-loader";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM