/**
* This is Foo class
*/
export default class Foo {
constructor() {}
}
和
/** * This is Bar class */ export default class Bar { constructor() {} /** * Init Bar from Foo * @param {Foo} foo instance of Foo * @returns {Bar} */ static initFromFoo(foo) { return new Bar(); } }
Bar
类将Foo
用作方法initFromFoo
的参数,但是IntelliSense无法理解@param Foo
被引用为class Foo
,并且无法正常工作,并说foo:any
,https://imgbbb.com/images/2019/09/24/image517c0ec9d1027ac9.png
如何使IntelliSense正常工作?
我尝试过的
将
./foo
导入./bar
-这使IntelliSense正常工作,但是我不需要此导入,我只需要引用类型定义即可。- [添加对另一个文件的引用,如TypeScript
/// <reference path="./foo">
-无影响- 使用下一个内容创建
jsconfig.json
文件:{ "compilerOptions": { "target": "es6", "allowSyntheticDefaultImports": true, "checkJs": true }, "exclude": [ "node_modules" ] }
也没有效果。它只是突出显示错误Cannot find name 'Foo'.ts(2304)
P.S。似乎与ES6模块有关的IntelliSense限制。因为如果我从两个文件中删除
https://i.ibb.co/CPL1gJC/image.pngexport/import
,IntelliSense都会按预期工作https://i.ibb.co/xmXqzSk/image.png
P.S.S。
很抱歉,我的仓库中的图像链接太低,无法发布图像。
import(path)语句导入类型。例如:
/**
* Init Bar from Foo
* @param {import('./foo').default} foo instance of Foo
* @returns {Bar}
*/
static initFromFoo(foo) {
return new Bar();
}
OR
/** * @typedef {import('./foo').default} Foo * * Init Bar from Foo * @param {Foo} foo instance of Foo * @returns {Bar} */ static initFromFoo(foo) { return new Bar(); }
仅适用于Visual Studio Code。这不是有效的JsDoc。P.S。