4

我正在使用 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是一种有效的方法。

我可以做些什么来教 IntelliJnewMethod是合法的吗?

4

2 回答 2

1

我不知道这是否仍然相关,但我发现您可以添加“命名空间”文档注释来告诉 IntelliJ/Webstorm 它不知道的方法。

对于您的示例,添加

  /** @namespace bar.newMethod */

确保 IntelliJ 不再将您的使用标记为无效

于 2015-05-20T08:04:07.010 回答
0

我认为问题在于 IntelliJ 不会推断内联属性的类型,即使它们是函数。让 IntelliJ 发挥出色的唯一方法是使用原型而不是内联对象表示法。IE:

function Bar() { }
Bar.prototype.addMethod = function() { };
Bar.prototype.newMethod = function() { };

var bar = new Bar();
bar.addMethod();
bar.newMethod();
于 2012-07-16T19:29:25.367 回答