【问题标题】:Provide autocompletion in Monaco using .d.ts files generated from jsdoc使用从 jsdoc 生成的 .d.ts 文件在 Monaco 中提供自动完成功能
【发布时间】:2020-11-18 11:44:06
【问题描述】:

我正在构建一个网站,用户可以在其中编写一个 Monaco 编辑器实例中的 javascript 代码。 我为他们提供了一些自定义的 js 库,并且我还想为这些库提供自动完成功能。

我的自定义库是用 javascript 编写并使用 jsdoc 进行注释的,所以我使用 typescript 编译器来生成 .d.ts 文件。这是我的tsconfig.json

{
  "include": ["src/**/*.js"],
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true,
    "declaration": true,
    "emitDeclarationOnly": true,
    "lib": [
      "ES2015",
      "DOM"
    ],
    "outDir": "docs/",
    "types": [
      "node"
    ]
  },

当我在这个简单的 javascript 文件上运行 npx tsc

import { a } from './v0/JsA';
import { b } from './v0/JsB';

export const myLib = { a, b }

我获得如下 .d.ts 文件

// myLib.d.ts
export namespace myLib {
    export { a };
    export { b };
}
import { a } from "./v0/JsA";
import { b } from "./v0/JsB";

我提供给摩纳哥使用

monaco.languages.typescript.javascriptDefaults.addExtraLib(dtsFileContentAsString, '')

不幸的是,当我开始写myLib. 时,这不会在摩纳哥触发自动补全。

但是我发现手动将myLib.d.ts文件的内容更改为

declare namespace myLib {
    let x = a;
    let y = b;
}
import { a } from "./v0/JsA";
import { b } from "./v0/JsB";

会触发自动完成。

对完成这项工作有什么帮助吗? (在摩纳哥方面或打字稿编译器方面)

【问题讨论】:

    标签: javascript typescript tsc monaco-editor


    【解决方案1】:

    我发现库 dts-bundle 在这种情况下很有用 https://www.npmjs.com/package/dts-bundle#command-line

    还将多个 .d.ts 文件捆绑到一个文件中以供 monaco 编辑器使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 2015-10-04
      • 2018-08-17
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多