Monaco:从 autocomplete/intellisense 中删除 Web API?

Monaco: Removing Web APIs from autocomplete/intellisense?

我在嵌入式应用程序中使用 Monaco,用户可以在我们自己的引擎中将 JavaScript 写入 运行。该引擎远非网络浏览器,因此我们拥有自己的 API,绝对不支持任何网络 API。然而,因为我们 运行 Monaco 在浏览器本身中,我猜它会选择这些 API 并通过它的(相当棒的)智能感知小部件显示它们。那么有没有办法禁用它并只显示我们的 API(我将使用 addExtraLibs 提供它)?

非常感谢。

是的。您可以使用 libs 属性 指定要包含的默认库。示例:

monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
  target: monaco.languages.typescript.ScriptTarget.ES2015,
  lib: ["es6"]
});

来自 CompilerOptions 部分的 Typescript 文档:

Note:

If --lib is not specified a default list of libraries are injected. The default libraries injected are: For --target ES5: DOM,ES5,ScriptHost For --target ES6: DOM,ES6,DOM.Iterable,ScriptHost

您要做的是省略 DOM 库。

我在某处读到,您还可以使用 ["!DOM"] 来包含所有默认值 除了 DOM,尽管我还没有亲自测试过。

确保 typescriptDefaults 用于 typescript 语言,typescript.javascriptDefaults 用于 javascript 语言。我认为他们基本上与摩纳哥相当。这让我绊倒了一段时间。