如何在 Blazor 组件中实现 TypeScript 隔离?

How to implement TypeScript Isolation in Blazor Components?

我知道如何实施JavaScript isolation in Blazor components

// Use the module syntax to export the function
export function sayHi(name) {
    alert(`hello ${name}!`);
}

private Task<IJSObjectReference> _module;
private Task<IJSObjectReference> Module => _module ??= JSRuntime.InvokeAsync<IJSObjectReference>("import", "./js/demo.js").AsTask();

async Task Submit()
{
    var module = await Module;
    await module.InvokeVoidAsync("sayHi", name);
}

但是我如何在 Blazor 组件中实现隔离的 TypeScript 连接来调用 TypeScript 文件中定义的“sayHi”函数?

问题是,如果我从 TypeScript 模块导出函数,如下所示:

export function sayHi(name) {
    alert(`hello ${name}!`);
}

然后编译成下面的javascript,没有"export":

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.sayHi = void 0;
function sayHi(name) {
    alert("hello " + name + "!");
}
exports.sayHi = sayHi;
//# sourceMappingURL=say.js.map

这就是我提出这个问题的原因。如何在 Blazor 组件中实现隔离的 TypeScript 连接以调用 TypeScript 文件中定义的“sayHi”函数?


回答: 将compilerOptions中的module设置为ES2015或ESNext

compilerOptions中的module设置为ES2015ESNextAleksey L.