作为一名Java开发人员,我习惯于能够从IDE的代码完成中看到所有相关信息。以下是Eclipse IDE中代码自动完成的示例。例如,您可以看到函数contentEquals
的返回类型是布尔值,它期望一个类型为StringBuffer
的参数。另外,如果JavaDoc在那里,你甚至可以很好地解释该函数应该如何使用。
现在,我正在寻找使用JavaScript编码时类似的东西。 我开始使用Webstorm,因为我想要一个具有更高级功能的IDE但是当你看到代码自动完成时,它看起来相当差或者我没有正确使用它。
有人可以帮我搞清楚吗?
这是一个更具体的例子:
让我们说,您希望使用navigator.geolocation获取用户的位置。让我们假设您可以通过调用getCurrentPosition()方法来了解它。
你继续输入你的IDE(在我的例子中是Webstorm):
navigator.geolocation.getCurrentPosition()
以下是Webstorm IDE的用法:
好的,它告诉我有一个强制性和一些可选参数来调用这个方法。让我们说,你想用只有强制参数来调用它,这个参数应该是一个函数。到目前为止这么好,但是有什么样的功能?这个函数应该带参数吗?它会返回什么吗?没有任何暗示。
我在网上的各种例子中发现,这个回调函数实际上确实需要一个参数,所以我继续写下来:
function printPosition(position) {
// do something
}
但接下来的问题是:此参数position
的类型是什么?你能用它做什么?
Whooot?它给了我各种各样的东西,但根本不是我想要的东西。所以我再次以谷歌结束。
这就是它应该是这样的样子:
console.log(position.coords.latitude + ' , ' + position.coords.longitude);
老实说,我从来没有想到这只是通过查看非常烦人的自动完成来完成的,因为我习惯在用Java编码时能够做到这一点。
任何人都可以与我的体验有关吗?我错过了什么吗?任何帮助将非常感谢!
答案 0 :(得分:4)
简而言之,因为JavaScript不是像Java这样的强类型语言,所以除非开发人员包含WebStorm(或任何IDE)可以解释的注释,否则您无法像Java一样获得超级粒度自动完成。
您可以使用Google Closure Annotation或JSDoc3来实施这些评论。使用这些,您可以手动指定将为您提供自动完成的注释。
如果没有这些,WebStorm真的只是最好猜测它需要什么,而且通常无法猜测得太好(这就是为什么你在上一次截图中得到基本上所有内容的巨大列表)。
使用JavaScript,您只需依赖文档。
答案 1 :(得分:3)
Javascript 是动态,弱类型语言:类型很松散,可以在运行时更改,因此, IDE 无法提供准确的完成,除非它可以在代码文档(JSDoc)的形式下找到提示。
您应该尝试 Typescript :来自 Microsoft 的 Javascript编译器,这会增加强大的打字率(包括一个 C#类似的语法)。它还允许使用最新的ECMA实现编写代码。 它在编译时将一致的类型检查添加到 IDE 。
换句话说,这是一种编写现代 Javascript 的方法(在类,生成器,扩展运算符等的支持下),以及类型(类型,泛型,接口)和一些打字稿特定功能(可能会进入下一个 ECMA 版本,因为 Microsoft 对这些规范的影响)。
这就是 Typescript 编译器,它关注将所有这些代码转换为可以在较旧的浏览器/平台上运行的纯兼容的 Javascript 代码。
查看手册以了解语法的外观: https://www.typescriptlang.org/docs/handbook/advanced-types.html
限制:
最后一句话: VSCode 对于 Typescript 也是一个很好的 IDE ,不如 WebStorm < / strong>但是免费。
答案 2 :(得分:0)