我有一个foo.js
文件:
/**
* Foo Class
* @typedef {Object} Foo
*/
function Foo(){
}
Foo.prototype.sayHello = function (){
alert("Hello!");
};
在我的bar.js
文件中,我有:
/** @type {Foo} */
var foo = new Foo();
foo.sayHello();
但是如果我输入foo.
,则Intellisense不建议使用sayHello()
。
这是一个古老的Javascript项目(没有npm / node / requirejs等),JS文件只是通过以下方式加载到HTML中:
<script src="foo.js"></script>
<script src="bar.js"></script>
有没有办法使Intellisense与普通的Javascript项目一起工作?
答案 0 :(得分:1)
您应该在function Foo()
上得到VSCode的提示,建议改用ES2015 class
语法。该语法会将您的代码更改为此
/**
* Foo Class
* @typedef {Object} Foo
*/
class Foo {
constructor() {
}
sayHello() {
alert("Hello!");
}
}
并且按提示在其他文件中提供了提示。
有趣的是,通过保持代码原样并简单地删除所有JSDoc,可以得到相同的结果。