导出自调用函数的模块的声明

时间:2016-09-30 13:26:15

标签: typescript npm webpack typescript-typings

这应该很简单,但我似乎无法弄明白。 npm模块next-tick在它的index.js中执行类似的操作:

module.exports = (function () {
    if (/*node*/) {
        return process.nextTick;
    }
    ...
    if (/*other env*/) {
        return function (cb) { setTimeout(callable(cb), 0); };
    }

    return null;
}());

还没有打字,所以我创建了next-tick.d.ts并将其包含在我的tsconfig.js中。

但是我无法弄清楚它应该包含什么:

我唯一没有编译错误的工作是:

declare module "next-tick" {
    export default function(fn:Function)
}

并在消费文件中:

import nextTick from 'next-tick';

但是当我与webpack捆绑并运行它时,它会说:next_tick_1.default is not a function。所以它试图致电.default

如果我使用require(并为webpack typings添加声明)

,那么它也有效
var nextTick:(fn:Function)=>void = require('next-tick');

但我确信我应该能够用打字稿导入来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

试试这个

declare module "next-tick" {
    function nextTick (fn:Function)
    export = nextTick
}

这使得该功能 export

导入

import nextTick = require('next-tick')

不能使用ES6导入语法,因为这只是一个函数,而不是模块(在ES6中需要)