【发布时间】: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