JSDoc - 如何为JavaScript检查类型

4

我正在使用JSDoc注释:

/**
 * @param {number} millis
 * @param {function} callback
 * */
function sleep(millis, callback) {
    setTimeout(function() {
        callback();
    }, millis);
}

那么,有什么工具可以告诉我们下面这行代码存在错误?
sleep('aaa', 'sdsdsd');

JSHint是否支持JSDoc类型注释?如何在Eclipse中启用此类支持?

作为补充,我建议使用 http://github.eclipsesource.com/jshint-eclipse/,它将在 js 编辑器中提供 JsHint 警告。 - Christophe Roussy
我想支持这个功能。请参见https://github.com/angelozerr/tern-lint/issues/32,它将在Eclipse中工作,但很快也会在Emacs和Atom中工作。 - Angelo
我已经创建了一个问题来支持在 tern-lint 中实现(它在 tern.java 中使用)https://github.com/angelozerr/tern-lint/issues/42 我很快会实现。 - Angelo
4个回答

4

jshint 不识别 jsdoc 注释。但是,您可以考虑使用 eslint 并为其编写插件,以对函数调用进行类型检查。根据您的项目设置方式,您可能需要预解析代码,将注释提取到规则文件中,供 eslint 规则使用。


Jason,@PaulVerest,你们知道2015年是否有任何已经实现这个功能的插件吗? - tomekwi

1

免责声明,我是tern.java的作者。

我建议您安装 tern.java 1.0.0-SNAPSHOT。它提供了使用JSDoc注释验证JavaScript文件的能力。这里是一个包含此问题示例的屏幕截图:

enter image description here

如果您需要改进JSDoc验证,请在此处创建问题


嗨,Angelo,我已经在从事编程一年了。你在SO上没认出我吗?:-) 等待你尝试Enide 2015 http://www.nodeclipse.org/enide/2015/ - Paul Verest

1
你可以查看https://github.com/yarax/typelint
这是一个EsLint插件,用于对JSDoc注释进行类型检查,并支持使用Redux状态或Swagger模式(基本上是任何JSON模式)进行类型检查的扩展。
它有助于避免从头开始编写复杂的组合类型并使用现有数据。

看起来它只适用于模式中定义的对象属性(就我所知,它似乎不处理@typedef对象)。 - Brett Zamir

0

现在VsCode可以轻松实现这一点。有两种方法可以激活基于jsDocs的vscode类型检查。

  1. 在您想要进行检查的文件顶部添加注释// @ts-check
  2. 要为所有文件激活它,请在项目根目录下创建一个名为jsconfig.json的文件,其中包含以下内容:{ "compilerOptions": { "checkJs":true } }

现在享受类型错误吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接