默认函数导出类型定义

jgi*_*ich 7 typescript

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

import PouchMiddleware from 'pouch-redux-middleware'

PouchMiddleware({...})
Run Code Online (Sandbox Code Playgroud)

这是我的打字定义:

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

declare var PouchMiddleware: PouchMiddleware;

declare module "pouch-redux-middleware" {
  export = PouchMiddleware;
}
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

模块'"pouch-redux-middleware"'没有默认导出.

申报这个的正确方法是什么?

Dav*_*ret 5

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

declare function PouchMiddleware(a: any): any;

declare module "pouch-redux-middleware" {
    export = PouchMiddleware;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样导入它:

import PouchMiddleware = require("pouch-redux-middleware");
Run Code Online (Sandbox Code Playgroud)

虽然有点烂。可能会有更好的答案。


我相信我之前的答案仅适用于以ES6为目标并将模块设置为“ ES2015”:

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

declare function PouchMiddleware(a: any): any;

declare module "pouch-redux-middleware" {
    export = PouchMiddleware;
}
Run Code Online (Sandbox Code Playgroud)

react库也会发生类似的情况。在这里阅读更多...