Fel*_*ann 4 node.js jsdoc jsdoc3 visual-studio-code es6-modules
我将 Node.js 与两个模块和一个依赖于它们的脚本一起使用:
库/Bar.js
module.exports = class Bar {
// ..
};
Run Code Online (Sandbox Code Playgroud)
库/Foo.js
const Bar = require('./Bar.js');
module.exports = class Foo {
/**
* @return {Bar} A Bar instance
*/
get someBar() {
return new Bar();
}
};
Run Code Online (Sandbox Code Playgroud)
主文件
const Foo = require('./lib/Foo.js');
checkFoo(new Foo());
/**
* @param {Foo} foo A Foo instance
*/
function checkFoo(foo) {
foo. // I get suggestions for Foo properties
foo.someBar. // I get suggestions for Bar properties
checkBar(foo.someBar);
}
/**
* @param {Bar} bar a Bar instance
*/
function checkBar(bar) {
bar. // I get no suggestions!
}
Run Code Online (Sandbox Code Playgroud)
我的代码编辑器 Visual Studio Code 使用 IntelliSense 向用户提供有关 Foo 和 Bar 属性的建议,这些建议在checkFoo
方法内部正常工作,因为类型foo
声明为Foo
对象,并且类型foo.someBar
在Foo
类中声明为Bar
对象。
但是,只要我将此Bar
实例传递给另一个方法 ( checkBar
),Bar
就无法识别该类型(可能是因为我不需要该模块)。JSDoc 中是否有特殊语法来指定在另一个模块中声明的类型?或者这只是 VSCode 的一个问题?
您不再需要导入类型(例如,这可能会破坏 linter)。相反,您可以使用导入类型语法来提示 VSCode(实际上是 TypeScript):
const Foo = require('./lib/Foo.js');
...
/**
* @param {import('./lib/Bar.js').default} bar a Bar instance
*/
function checkBar(bar) {
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,关键字 default 仅是必需的,因为它是默认导出。
归档时间: |
|
查看次数: |
3597 次 |
最近记录: |