WebStorm 6中的闭包编译器注释,如何使用记录类型
Closure Compiler annotations in WebStorm 6, how to use Record Types?
以下功能正常:
/**
* Test
* @param {{ aRandomKey: string, anotherKey }} data
*/
function test(data) {
console.log(data.aRandomKey);
}
这里data.aRandomKey
被识别为有效参数。
现在问题出现在以下方面:
/**
* @param { string, function({{ pageId: string }} data) }
*/
socket.on('page:getSource', function (data) {
//data = { pageId: id }
console.log(data.pageId)
})
此处,data.pageId
未解析。。并且CCD_ 3语法也是错误的。
同样适用于:
socket.on('page:getSource',
/**
* @param {{ pageId: string }} data
*/
function (data) {
//data = { pageId: id }
console.log(data.pageId)
}
)
所以。。我该如何处理这些情况?
第一个示例注释错误地应用于socket.on
,而不是回调函数。此外,注释的格式不正确。@param标记只描述一个参数及其类型。你试图描述两个。此外,记录类型只需要一组围绕它们的大括号。这是一种可能的方式:
/**
* @param {string} eventName,
* @param {function({ pageId: string })} callback
*/
socket.on = function(eventName, callback) {};
socket.on('page:getSource', function (data) {
//data = { pageId: id }
console.log(data.pageId)
});
您的第二个示例似乎是正确的,但由于没有提供socket.on
定义,我无法验证。下面是一个类似的测试用例:
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @warning_level VERBOSE
// @formatting pretty_print
// ==/ClosureCompiler==
function test2(a, b) {
b(a);
}
test2({pageId: 17},
/**
* @param {{ pageId: string }} data
*/
function (data) {
//data = { pageId: id }
console.log(data.pageId)
}
);
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 如何使用提交按钮搜索表中的记录
- 使用Rails 3中的AJAX删除记录
- 如何使用 Backbone 将多条记录呈现到 html 表中.js .
- 使用Ajax的后退按钮历史记录,URL中没有散列
- 如何记录其他网站的值并将其放入数据库中使用
- 使用Javascript将多条记录插入SQLite数据库时出错
- Meteor使用表格值插入记录
- 如何在javascript中记录对象时强制使用toString
- 如何使用node.js将web和错误事件记录到Splunk
- 如何记录用户'使用Javascript/PHP的语音
- 使用jquery和ajax删除记录
- 使用记录保存的消息进行表单验证
- 使用jQuery/Ajax从数据库中检索记录
- 使用jquery获取单个记录
- 如何在不使用插件的情况下用程序记录浏览器操作
- 尝试使用Promises删除记录
- HTML5 使用记录器.js记录输入缓冲区
- WebStorm 6中的闭包编译器注释,如何使用记录类型
- 使用记录行对ajax进行编程的有效方法