'goog.nullFunction'能否适合特定的功能签名?

时间:2017-02-14 03:41:56

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

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

'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'可以匹配任何函数签名吗?可能不是,我想。

1 个答案:

答案 0 :(得分:1)

你可以让param为空(或者更好但是可选)并且只在标志打开时指定工厂函数:

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

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