gpt4 book ai didi

javascript - 我如何告诉闭包编译器忽略代码?

转载 作者:行者123 更新时间:2023-11-30 12:59:44 24 4
gpt4 key购买 nike

我决定在实现接口(interface)时需要一些东西来帮助我。所以我把这个函数添加到闭包库的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);
};

现在如果我声明我的类实现了一个接口(interface)但没有实现该接口(interface)的所有方法,这个函数将抛出一个错误。从最终用户的 Angular 来看,这绝对没有任何好处,它只是帮助开发人员的一个很好的补充。因此,我如何告诉闭包编译器在看到下面的行时忽略它?

goog.implements(myClass, fooInterface);

有可能吗?

最佳答案

这取决于你所说的忽略是什么意思。你想让它编译成什么都没有,这样它就只能在未编译的代码中工作吗?如果是这样,您可以使用标准的@define 值之一:

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

或者,仅当启用 goog.DEBUG 时:

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

如果这些不适合,您可以定义自己的。

还是您的意思完全不同?

关于javascript - 我如何告诉闭包编译器忽略代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17685998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com