我将google-closure编译器和jsLint工具用于JS代码。因为闭包编译器查看JSDoc标签,所以我需要将变量转换为正确的类型,否则编译器将抛出错误。下面的代码可以正常工作(没有编译器警告),但是当我运行jsLint时,出现“奇怪的赋值”错误。还有其他方法可以投射变量。
/** @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)
}
我希望在一行中完成转换,而不是在我需要调用的每个函数上进行转换!
答案 0 :(得分:0)
我想为您提供一些想法;
1)来自Writing Resilient Components/#marie-kondo-your-lint-config:
这是我建议您星期一进行的操作。召集您的团队半小时,仔细检查项目配置中启用的所有皮棉规则,然后问自己:“此规则是否曾经帮助我们捕获到错误?”如果没有,请将其关闭。
2)Closure Compiler has no issue with your code.
3)如果需要,只需投放两次即可
77
4)如果您真的很想避免重复自己,可以创建一个为您进行转换的函数;
public Contact findContact(String name) {
Contact currentContact = null;
for (Contact contact : contacts) {
if (contact.getName().equals(name)) {
currentContact = contact;
break;
}
}
return currentContact;
}
5)用ES-lint + jsdocs-plugin进行皮棉擦拭。