我正在使用IntelliJ进行一些Javascript开发。我们在我们的网站上使用TinyMCE,它有一些动态生成的方法(它的事件)。
IntelliJ抱怨它无法解析变量......不出所料,因为事件是动态生成的。
我知道我可以抑制那条线的检查,但是有更好的方法吗?理想情况下,我希望能够告诉IntelliJ这些变量......也许是通过JSDoc?或者还有另一种方式吗?
修改
基本上,这适用于在运行时创建的属性,并且不能由IntelliJ静态确定。
一个基本的例子是这段代码:
var Foo = {
addMethod: function() {
this.newMethod = function() {
console.log("This method is dynamically generated");
}
}
}
var foo = new Foo();
foo.addMethod();
foo.newMethod();
IntelliJ可以推断出addMethod
是一种方法,但它无法推断出newMethod
是一种有效的方法。
我可以做些什么来教授IntelliJ newMethod
是合法的吗?
答案 0 :(得分:0)
我认为问题在于IntelliJ不会推断内联属性的类型,即使它们是函数。让IntelliJ发挥出色的唯一方法是使用原型而不是内联对象表示法。即:
function Bar() { }
Bar.prototype.addMethod = function() { };
Bar.prototype.newMethod = function() { };
var bar = new Bar();
bar.addMethod();
bar.newMethod();
答案 1 :(得分:0)
我不知道这是否仍然相关, 但我发现你可以添加'命名空间'文档注释来告诉IntelliJ / Webstorm它不知道的方法。
对于您的示例,添加
/** @namespace bar.newMethod */
确保IntelliJ不再将您的使用标记为无效