gpt4 book ai didi

javascript - 为 Singleton 的 Google Closure Compiler 评论 JavaScript

转载 作者:行者123 更新时间:2023-11-30 13:21:42 25 4
gpt4 key购买 nike

我正在尝试理解 JSDoc style for documenting JavaScriptJavaScript Closure Compiler 一起使用.我有下面的 JavaScript 代码

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==

(function(){
/**
* @type Array.<string>
* @private
*/
var sb = [];

/**
* @const
* @type{{append: function(string): SingletonStringBuffer, toString: function(): string}}
*/
window['SingletonStringBuffer'] = {
/**
* @param {string} text
* @return {SingletonStringBuffer}
*/
append: function(text){
sb.push(text);
return SingletonStringBuffer;
},
/**
* @return {string}
*/
toString: function(){
return sb.join("");
}
};
}());

当我对这段代码进行高级编译时,我收到了 2 条警告。

JSC_TYPE_PARSE_ERROR: Bad type annotation. Unknown type SingletonStringBuffer at line 10 character 35
* @type{{append: function(string): SingletonStringBuffer, toString: function()...
^ JSC_TYPE_PARSE_ERROR: Bad type annotation. Unknown type SingletonStringBuffer at line 15 character 11
* @return {SingletonStringBuffer}
^

append 函数返回对封装对象的引用。它返回的变量 SingletonStringBuffer 已声明...所以我不确定哪里出了问题或如何更正它。

最佳答案

就编译器而言,您还没有创建命名类型。对于这种情况,我希望您创建一个接口(interface):

/** @interface */
function StringBuffer() {
}
/**
* @param {string} text
* @return {StringBuffer}
*/
StringBuffer.prototype.append;

etc

这可以在代码中声明(如果您使用高级模式,它将被删除)或在您的外部文件中声明(如果您想要在简单模式下没有代码的类型)。

然后您可以像这样使用它(在您的情况下):

(function(){
/**
* @type Array.<string>
* @private
*/
var sb = [];

/**
* @const
* @type {StringBuffer}
*/
window['SingltonStringBuffer'] = {
/**
* @param {string} text
* @return {StringBuffer}
*/
append: function(text){
sb.push(text);
return SingltonStringBuffer;
},
/**
* @return {string}
*/
toString: function(){
return sb.join("");
}
};
}());

关于javascript - 为 Singleton 的 Google Closure Compiler 评论 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059609/

25 4 0
文章推荐: javascript - 滑动切换 [Jquery 函数] 不工作
文章推荐: c# - 如何在 FluentAssertions ShouldBeEquivalentTo() 中排除多个属性
文章推荐: c# - 将 List 转换为 List c#