【问题标题】:Closure Compiler Externs for Function with static fields具有静态字段的函数的闭包编译器外部
【发布时间】:2018-10-14 00:35:15
【问题描述】:

对于在 Google 闭包编译器中还具有函数对象属性的构造函数,正确的类型是什么?

这是Closure compiler debugger 上的可运​​行第一次尝试。

应用程序代码

const Mocha = /** @type {!MochaJS} */ (require('mocha'));

const mochaInstance = new Mocha();
const Suite = Mocha.Suite;

闭包外部

/** @constructor */
const MochaJS = function() {};

/** @type {!MochaJS.Suite} */
MochaJS.prototype.Suite;

/** @record */
MochaJS.Suite = function() {};

【问题讨论】:

    标签: javascript types google-closure-compiler


    【解决方案1】:

    困难在于闭包编译器不能很好地处理外部模块定义。另外,不要将构造函数/命名空间与实例混淆。它们是不同的。

    应用程序

    // A constructor type for Mocha
    const Mocha = /** @type {!function(new:MochaJS)} */ (require('mocha'));
    const mochaInstance = new Mocha();
    
    const Suite = /** @type {!MochaJSSuite} */ (Mocha.Suite);
    

    外部人员

    /** @constructor */
    const MochaJS = function() {};
    
    /** @function */
    MochaJSSuite = function() {};
    

    这只是对类型的粗略猜测——我对 Mocha 不够熟悉,无法在不去寻找文档参考的情况下编写外部变量。希望它会为您指明正确的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      相关资源
      最近更新 更多