我如何告诉关闭编译器忽略代码?(How do I tell the closure compiler

2019-10-18 09:36发布

我决定我需要的东西来帮助我一点,而实现接口。 所以我添加了这个功能,在封闭库base.js文件。

/**
 * Throws an error if the contructor does not implement all the methods from 
 * the interface constructor.
 *
 * @param {Function} ctor Child class.
 * @param {Function} interfaceCtor class.
 */
goog.implements = function (ctor, interfaceCtor) {
    if (! (ctor && interfaceCtor))
    throw "Constructor not supplied, are you missing a require?";
    window.setTimeout(function(){
        // Wait until current code block has executed, this is so 
        // we can declare implements under the constructor, for readability,
        // before the methods have been declared.
        for (var method in interfaceCtor.prototype) {
            if (interfaceCtor.prototype.hasOwnProperty(method)
                && ctor.prototype[method] == undefined) {
                throw "Constructor does not implement interface";
            }
        }
    }, 4);
};

现在,如果我宣布,我的类实现一个接口,但没有实现该接口的所有方法,这个函数将抛出一个错误。 这已经完全从最终用户的角度来看,一分收获,那简直是一个很好的补充,以帮助开发人员。 所以我怎么告诉编译器关闭忽略以下线时,看到了吗?

goog.implements(myClass, fooInterface);

是有可能吗?

Answer 1:

这取决于你的意思是不理会。 你想它来编译下降到什么使得它仅在未编译代码的工作? 如果是这样,你可以使用标准的@define值之一:

goog.implements = function (ctor, interfaceCtor) {
  if (!COMPILED) {
    ...
  }
};

或交替,只有当goog.DEBUG启用:

goog.implements = function (ctor, interfaceCtor) {
  if (goog.DEBUG) {
    ...
  }
};

如果这些不适合你可以定义自己。

或者你的意思是别的东西完全?



文章来源: How do I tell the closure compiler to ignore code?