typescript - Blazor JS 与 Typescript 互操作 - 正确的 DotNet 声明导入

标签 typescript blazor tsconfig

我正在编写一个 Razor 类库,其中包含从 TypeScript 转译的 JavaScript 互操作。 TypeScript 中的某些代码将引用全局可用变量 DotNet当 Blazor 库初始化时会包含它。我找到了DotNet @microsoft/dotnet-js-interop 中的模块声明Node 包(作为 devDependency 添加)和 TypeScript 能够在 "moduleResolution": "node" 时找到导出。设置在我的 tsconfig.json 。但是,如果我这样做import { DotNet } from "@microsoft/dotnet-js-interop" ,那么此导入将保留在转译的 JavaScript 代码中。我尝试了一些解决方法,但没有成功:

  1. 使用import type { DotNet } from "@microsoft/dotnet-js-interop"结果 (TS) 'DotNet' cannot be used as a value because it was imported using 'import type'.无论在哪里DotNet正在被引用;
  2. 在尝试像 ///<reference types/path="@microsoft/dotnet-js-interop or node_modules/@microsoft/dotnet-js-interop/dist/Microsoft.JSInterpop.d.ts"> 这样的事情时,我一生都无法得到任何结果。或修改tsconfig.json值如 paths (与 "baseUrl"="." )或 typeRoots 。所有这些都会导致错误 (TS) Cannot find name 'DotNet' .

有什么办法可以正确导入DotNet模块声明不会因不必要的导入而污染转译的 JavaScript 代码?

最佳答案

这很棘手(缺乏有凝聚力的文档并没有帮助),但我自己能够弄清楚。

诀窍是声明一个变量并使用 typeof import 定义其类型,如下所示:

declare const DotNet: typeof import("@microsoft/dotnet-js-interop").DotNet;

将其放在文件的顶部,就可以开始了。

关于typescript - Blazor JS 与 Typescript 互操作 - 正确的 DotNet 声明导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75493058/

相关文章:

javascript - 在 Angular 5 CLI 项目中编译 JavaScript 文件

typescript - karma , typescript 定义文件未加载

typescript - 如何解决WebStorm中的 "Corresponding file not included in tsconfig.json"错误?

c# - 带有选择下拉列表的 Blazor onchange 事件

typescript - TypeScript 中的控制台输入

javascript - 类方法无法识别

javascript - 在 Angular 6 中使用 JSON 进行过滤

javascript - 在 Blazor 中显示模态视频

c# - 将 ASP.Net Core 3 预览版 6 发布到 Azure

angular - typescript : Can't set default parameter value as false