Javascript 强制转换时jsLint异常分配错误
我在JS代码中使用了google闭包编译器和jsLint工具。因为闭包编译器查看JSDoc标记,所以我需要将变量转换为正确的类型,否则编译器将抛出错误。下面的代码工作正常(没有编译器警告),但当我运行jsLint时,会出现“奇怪的赋值”错误。是否有其他方法来强制转换变量Javascript 强制转换时jsLint异常分配错误,javascript,google-closure-compiler,jsdoc,jslint,jshint,Javascript,Google Closure Compiler,Jsdoc,Jslint,Jshint,我在JS代码中使用了google闭包编译器和jsLint工具。因为闭包编译器查看JSDoc标记,所以我需要将变量转换为正确的类型,否则编译器将抛出错误。下面的代码工作正常(没有编译器警告),但当我运行jsLint时,会出现“奇怪的赋值”错误。是否有其他方法来强制转换变量 /** @return {Town|Village|Park|Metropolis} */ var getCurrentItem = function() {...some code} var item = getCurren
/** @return {Town|Village|Park|Metropolis} */
var getCurrentItem = function() {...some code}
var item = getCurrentItem();
if (condition)
{
item = /** @type {Town} */ (item); // 'Weird assignment' error occurs
drawTown(item);
updateTown(item)
}
else
{
item = /** @type {Village} */ (item); // 'Weird assignment' error occurs
drawVillage(item);
updateVillage(item)
}
我希望在一行中完成转换,而不是在我需要调用的每个函数上 我想给你一些想法 1) 发件人: 这是我建议你周一做的事。召集您的团队半个小时,检查项目配置中启用的每个lint规则,并问自己:“这个规则是否帮助我们捕获错误?”如果没有,请关闭它 (二) 3) 如果必须,只需投两次:
drawVillage(/** @type {Village} */ (item));
updateVillage(/** @type {Village} */ (item));
4) 如果你真的很担心避免重复你自己,你可以创建一个功能,为你做铸造
/**
* @param {Town|Village|Park|Metropolis} p
* @return {boolean|Village}
*/
var getVillage = function(p) {
if (p.somethingVillageSpecific) {
return /** @type {Village} */ (p);
} else {
return false;
}
}
5) 皮棉与ES皮棉+ 请看,听起来您需要一种方法来记录
项的类型,而无需重新分配它。您是否使用gjslint
?它现在已被弃用:@CertainPerformance您是对的。我知道在javascript中,将变量分配给它本身是没有意义的,但我需要它来进行转换。不幸的是,您的链接仅适用于window.location或其他浏览器全局文件。@约翰林普:不。我没有使用gjsLint。@royalBlue我明白了。