网站搜索

typescript - monaco 编辑器:使用 npm 安装的 “d.ts” 文件来实现智能感知


我需要我通过 npm install mylibname 安装的 d.ts 文件的智能感知。

monaco 组件提供了一个函数 addExtraLib,例如:Microsoft Monaco 示例

我不明白的是:我找到的所有例子都必须知道源代码才能作为第一个参数添加到 addExtraLib(myKnownSourceCode)

但我只是想使用整个“d.ts”文件来获取智能感知。

这可能吗?

答案#1

我认为你误解了 source 参数。这只是一个任意字符串,我甚至不确定它是否用于 monaco-editor 之外的任何可见内容。

相反,只需调用 addExtraLib(typings, "myLibrary") 或类似方法。

附注:这是 Monaco 编辑器的全局设置,这意味着你不能在不同的编辑器中拥有不同的类型定义。这有时不是你想要的,你可以改用 setExtraLib。然而,这只是一个部分解决方案。一旦在同一页面/同一窗口中有不同的编辑器需要不同的类型定义,这种方法就不太适用了。

typings 参数是一个包含 TS 类型声明的简单字符串。 playground 显示了它应该是什么样子的:

// extra libraries
var libSource = [
    "declare class Facts {",
    "    /**",
    "     * Returns the next fact",
    "     */",
    "    static next():string",
    "}",
].join("\n");
var libUri = "ts:filename/facts.d.ts";
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);

实际上,我建议查看那里的所有示例,以了解如何使用 Monaco。