如何在VSCode中使IntelliSense显示从其他文件完成?

时间:2017-12-02 11:14:28

标签: javascript visual-studio-code intellisense javascript-intellisense

背景:

我在斯威夫特写了一个游戏。现在我想将游戏逻辑(模型)部分翻译成JS,这样我就可以编写另一个可以在浏览器中播放的游戏版本。由于Swift和JS是如此不同,我首先将游戏翻译成C#,然后使用Bridge.NET将C#代码翻译成JS。现在,我想在JS中使用p5.js库编写UI代码。 (Bridge.NET不支持p5.js,所以我不能用C#编写UI代码)

基本上,我将有一个HTML文件引用包含一些p5.js代码的JS文件,以及Bridge.NET输出的JS文件。在UI代码中,我需要调用一些游戏逻辑代码,它位于Bridge.NET输出文件中。

根据Bridge.NET文档,我可以像普通的JS一样从输出文件中调用代码,只要我包含带有<script>标记的所有输出文件。

但是,我用来编写所有这些代码的VSCode没有为Bridge.NET输出文件显示IntelliSense,也没有为p5.js类和成员显示IntelliSense。

这是我的HTML文件:

<html>
  <head>
    <meta charset="utf-8" />
    <!-- These are p5.js files -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/addons/p5.dom.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/addons/p5.sound.min.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <script src="scripts/sketch.js"></script> <!-- This is the file containing UI code -->
    <!-- The below are the bridge output files -->
    <script src="scripts/bridge.js"></script>
    <script src="scripts/bridge.console.js"></script>
    <script src="scripts/bridge.meta.js"></script>
    <script src="scripts/MyGame.js"></script>
    <script src="scripts/MyGame.meta.js"></script>
    <script>
    // I should be able to see IntelliSense for all my classes in the line below, but I can't.
    MyGame.
    </script>
  </body>
</html>

我在某处读过VSCode仅支持同一文件中的代码的IntelliSense。我在其他地方读到了我需要添加jsconfig.json,所以我添加了这样的内容:

{
    "compilerOptions": {
        "target": "ES6"
    }
}

但没有任何改变。

关于在VSCode上启用IntelliSense有很多帖子,但它们都是关于使用npm和节点,但我只是想为客户端代码获取IntelliSense,所以我也没有使用那些。

如何为与<script>链接的文件中声明的内容启用IntelliSense?

1 个答案:

答案 0 :(得分:1)

自动完成基于打字稿类型声明文件 - .d.ts 。大多数库已经将这些文件作为npm包提供,但它不适用于p5。如果其中一些文件是像MyGame.d.ts那样创建的,请搜索工具生成的文件。如果是,您可以在脚本中添加您正在编写对它的引用:

///<reference path=" put the filename with path here "/>