Как получить intellisense с собственными файлами javascript в vscode

Я использую vscode Version 1.14.2 (1.14.2) и пытаюсь получить intellisense для моих собственных файлов javascript. Чтобы проверить это, я создал два файла test.js и main.js. В test.js у меня такой код ...

{
  Test = {};

  let testObj = {};

  Test.getAllTest = function() {
    return testObj;
  };
}

В моем main.js файле есть следующее ...

/// <reference path="./test.js" />
{
  Test.
}

Я хочу иметь intellisense для моего собственного кода. Можно ли сделать это в vscode?

Обновление 10 августа 2017 г.

Как вы могли заметить, предыдущий код - это глупый фрагмент. Позвольте мне вставить код из упражнения, над которым я работаю ...

"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') я не могу require('jQuery') именно по этой причине. Предыдущий код находится в файле с именем bakery-factory.js. Ниже, я прилагаю снимок экрана, показывающий, что intellinsense не работает для модуля.

введите здесь описание изображения

Я хочу добавить, что использую Grunt для выполнения нескольких задач. Я не уверен, связано ли это с проблемой intellisense. Я очень доволен редактором и хотел бы, чтобы он работал.

Обновление 11 августа 2017 г.

Я добился его работы, следуя твоему совету ...

let bakery = {
    loadInventory: function(...

То, как у меня было раньше, не работает ...

let bakery = {}

bakery.loadInventory = function(...

Спасибо за объяснение !!


person Gilbert    schedule 07.08.2017    source источник


Ответы (1)


В этом случае VSCode 1.15 может предоставлять только ограниченный интеллект. Есть две проблемы:

  • Мы не поддерживаем неявные глобальные назначения, такие как Test = .... Вам нужно объявить переменную var Test = ..., а затем создать простой _3 _ файл, чтобы все файлы JS в вашей рабочей области использовали один и тот же глобальный контекст.

  • Наш intellisense также не распознает свойства, которые добавляются к объекту после его создания. Это ошибка, и ее отслеживает: https://github.com/Microsoft/TypeScript/issues/10868 Вместо этого вам нужно объявить член пространства имен во время назначения: var Test = { getAllTest: ... }

Если возможно, я рекомендую вам изучить использование подходящих модулей с четко определенным импортом и экспортом. Это обеспечит гораздо лучший опыт работы с IntelliSense и, что более важно, сделает код более удобным в обслуживании и более легким для понимания.

person Matt Bierner    schedule 07.08.2017