如何指示 Monaco 编辑器一组类型是全局的?这是我尝试过的。通过下面的设置,我可以成功地将
import type { Foo } from "my-lib";
写入 Monaco 编辑器。但是,我希望允许 my-lib 中的类型是全局的,以便在 Monaco 中编辑的脚本不必显式导入任何内容。
// setup compiler options
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
target: monaco.languages.typescript.ScriptTarget.ES2016,
allowNonTsExtensions: true,
moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
module: monaco.languages.typescript.ModuleKind.CommonJS,
noEmit: true,
typeRoots: ["node_modules/@types"],
types: ["my-lib"] // <=== NOTE THIS
});
// define my-lib
monaco.languages.typescript.typescriptDefaults.addExtraLib(
"export interface Foo { foo: number; }",
"file:///node_modules/@types/my-lib/index.d.ts"
);
// create model
const model = monaco.editor.createModel(
"const o: Foo = { foo: 23 };", // <=== this code will have an error in the Monaco editor
"typescript",
monaco.Uri.parse(`file:///main.ts`)
);
// create the editor
const editor = monaco.editor.create(document.getElementById("container"), { model });
我找不到原因的解释,但从源文本中删除
export
关键字会使摩纳哥接受使用此接口的代码。