默认函数导出类型定义

时间:2016-04-04 19:47:55

标签: typescript

我正在尝试为pouch-redux-middleware编写一个输入定义,它导出一个函数:

import PouchMiddleware from 'pouch-redux-middleware'

PouchMiddleware({...})

以下是我的打字定义:

interface PouchMiddleware {
  (a: any): any;
}

declare var PouchMiddleware: PouchMiddleware;

declare module "pouch-redux-middleware" {
  export = PouchMiddleware;
}

这会导致错误:

  

模块'“pouch-redux-middleware”'没有默认导出。

宣布这个的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

要转换为commonjs模块,您可能只需将定义文件更改为:

declare function PouchMiddleware(a: any): any;

declare module "pouch-redux-middleware" {
    export = PouchMiddleware;
}

然后像这样导入它:

import PouchMiddleware = require("pouch-redux-middleware");

虽然有点糟糕。有人可能会得到一个更好的答案。

我相信我之前的回答仅适用于针对ES6并将模块设置为“ES2015”:

  

您需要使用--allowSyntheticDefaultImports进行编译才能使其正常工作,然后将定义文件中的界面更改为函数:

declare function PouchMiddleware(a: any): any;

declare module "pouch-redux-middleware" {
    export = PouchMiddleware;
}
     

反应库也发生了类似的事情。 Read more here...

答案 1 :(得分:0)

通常,您可以使用以下结构导出和导入类。

module pouch-redux-middleware {
     export class pouch {

     }
}

要使用导出的类,您需要编写: -

import {pouch} from 'FileName'

此致

的Ajay