代码之家  ›  专栏  ›  技术社区  ›  Flion

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

  •  1
  • Flion  · 技术社区  · 9 年前

    这应该很简单,但我似乎无法理解。 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键入为其添加声明),也是有效的

    var nextTick:(fn:Function)=>void = require('next-tick');
    

    但我确信我应该能够通过输入打字稿来做到这一点?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Bruno Grieder    9 年前

    试试这个

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

    这使得函数 这个 出口

    导入的步骤

    import nextTick = require('next-tick')
    

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

    推荐文章