使用 JavaScript 自动完成类 Java 代码?

Han*_*ans 6 javascript autocomplete webstorm

作为一名 Java 开发人员,我已经习惯于能够从 IDE 的代码完成中看到所有相关信息。下面是一个来自 Eclipse IDE 的代码自动完成示例。例如,您可以看到该函数的返回类型contentEquals是一个布尔值,并且它需要一个类型为 的参数StringBuffer。此外,如果有 JavaDoc,您甚至可以很好地解释应该如何使用该函数。

在此处输入图片说明

现在我在用 JavaScript 编码时正在寻找类似的东西。我开始使用 Webstorm 是因为我想要一个具有更高级功能的 IDE,但是当您查看代码自动完成功能时,它要么看起来很糟糕,要么我没有正确使用它。

有人可以帮我弄清楚吗?

下面是一个更具体的例子:

假设您想通过使用 navigator.geolocation 获取用户的位置。假设您知道通过调用 getCurrentPosition() 方法可以完成的工作。

你继续输入你的IDE(在我的例子中是Webstorm):

navigator.geolocation.getCurrentPosition()
Run Code Online (Sandbox Code Playgroud)

以下是 Webstorm IDE 的内容:

在此处输入图片说明

好的,它告诉我有一个强制参数和几个可选参数来调用这个方法。比方说,您只想使用强制参数来调用它,该参数应该是一个函数。到目前为止一切顺利,但什么样的功能呢?这个函数应该带参数吗?它会返回任何东西吗?没有任何提示。

我在网上的各种例子中发现,这个回调函数实际上只带一个参数,所以我继续写它:

function printPosition(position) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但是下一个问题来了:这个参数是什么类型的position?你能用它做什么?

所以我尝试代码自动完成: 在此处输入图片说明

嗬嗬?它给了我各种各样的东西,但根本不是我正在寻找的东西。所以我再次以谷歌结束。

这是它应该是什么样子:

console.log(position.coords.latitude + ' , ' + position.coords.longitude);
Run Code Online (Sandbox Code Playgroud)

老实说,我从来没有想到这是通过查看自动完成来完成的,这很烦人,因为我习惯于在 Java 中编码时能够做到这一点。

任何人都可以与我所经历的有关吗?我错过了什么吗?任何帮助将不胜感激!

sam*_*ime 4

简而言之,由于 JavaScript 不是像 Java 那样的强类型语言,因此您无法像 Java 那样获得超细粒度的自动完成功能,除非开发人员包含了 WebStorm(或任何 IDE)可以解释的注释。

您可以使用Google Closure Annotation或JSDoc3来实现这些注释。使用这些,您可以手动指定将为您提供自动完成功能的注释。

如果没有这些,WebStorm 实际上只是尽力猜测它需要什么,而且它通常无法猜测得太好(这就是为什么你在最后一个屏幕截图中得到了基本上所有内容的巨大列表)。

使用 JavaScript,您只需要依赖文档即可。