我正在使用vscode Version 1.14.2 (1.14.2)
而我正试图获取我自己的javascript文件的智能感知功能。为了测试这个,我创建了两个文件test.js
和main.js
。在test.js
我有以下代码......
{
Test = {};
let testObj = {};
Test.getAllTest = function() {
return testObj;
};
}
在我的main.js
文件中,我有以下内容......
/// <reference path="./test.js" />
{
Test.
}
我想要对我自己的代码进行智能感知。是否有可能在vscode中实现这一目标?
以前的代码,你可以注意到它是一个愚蠢的片段。让我粘贴我正在进行的练习中的代码......
"use strict";
var $ = require("../lib/node_modules/jquery/dist/jquery.min.js");
let line = console.log;
let bakery = {};
bakery.loadInventory = function() {
return new Promise(function(resolve, reject) {
$.ajax({
url: "https://cake-2444b.firebaseio.com/ccakes.json"
})
.done(function(data) {
resolve(data);
})
.fail(function(error) {
reject(error);
});
});
};
module.exports = bakery;
jQuery与--save-dev
一起安装,我怀疑我出于这个原因我不能require('jQuery')
。之前的代码位于名为bakery-factory.js
的文件中。贝娄,我包括一个屏幕截图,显示intellinsense不适合该模块。
我想补充一点,我正在利用Grunt来完成一些任务。我不确定这是否与intellisense问题有关。我对编辑非常满意,我希望能够让它发挥作用。
我遵照你的建议......
let bakery = {
loadInventory: function(...
我以前的方式不起作用......
let bakery = {}
bakery.loadInventory = function(...
感谢您解释!!
答案 0 :(得分:0)
VSCode 1.15在这种情况下只能提供有限的智能感知。有两个问题:
我们不支持隐式全局分配,例如Test = ...
。您需要声明变量var Test = ...
,然后创建一个简单的jsconfig.json
文件,以便工作区中的所有JS文件共享相同的全局上下文。
我们的intellisense也不会识别在创建对象后添加到对象的属性。这是一个错误,并通过以下方式进行跟踪:https://github.com/Microsoft/TypeScript/issues/10868相反,您需要在分配时声明命名空间成员:var Test = { getAllTest: ... }
如果可能,我建议您考虑使用具有良好定义的导入和导出的适当模块。这些将提供更好的IntelliSense体验,更重要的是,使代码更易于维护和更容易推理。