Monaco 编辑器和 Typescript:如何添加全局类型?

问题描述 投票:0回答:1

如何指示 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 });

摩纳哥编辑游乐场

typescript monaco-editor
1个回答
0
投票

我找不到原因的解释,但从源文本中删除

export
关键字会使摩纳哥接受使用此接口的代码。

© www.soinside.com 2019 - 2024. All rights reserved.