【问题标题】:Can 'goog.nullFunction' fit a specific function signature?'goog.nullFunction' 可以适合特定的函数签名吗?
【发布时间】:2017-02-14 03:41:55
【问题描述】:

当某个实验标志打开时,我将注入注册为:

'abcFactory': name.space.createSomeModel

并注入工厂如下:

/**
 * @param {!function(!Object): !some.DataType} abcFactory
 * @constructor @struct
 */
some.component.do = function(abcFactory) {

};

some.component.do.inject = ['abcFactory'];

但是当实验标志关闭时,我可以注册吗:

'abcFactory': goog.nullFunction

没有编译器抱怨函数签名不匹配?

'goog.nullFunction' 可以匹配任何函数签名吗?我猜可能不会。

【问题讨论】:

    标签: javascript google-closure-compiler google-closure-library javascript-injection


    【解决方案1】:

    您可以将参数设为可空(或更好但可选),并且仅在标志打开时指定工厂函数:

    https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#optional-parameter-in-a-param-annotation

    可能还会添加一些检查以确保在使用之前该函数不为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-10
      • 2021-11-20
      • 2016-06-25
      • 2011-11-28
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多