如何从 AssemblyScript 导出类?

Pal*_*tze 5 javascript webassembly assemblyscript

我正在尝试将简单的碰撞检测库从 JavaScript 移植到 WebAssembly 以提高速度。在查找了编译为 WASM 的语言之后,AssemblyScript 似乎很完美,因为我只需要向 JS 文件添加类型。整个库是 a Class,添加类型后我尝试编译它,但它无法正确编译。例如,使用命令编译npx asc path/to/main.ts -o wasm.wasm --exportRuntime -t wasm.wat --bindings esm

export class Test {
    constructor() {
        console.log('Successful!');
    }
};
Run Code Online (Sandbox Code Playgroud)

结果出现了这个错误:

WARNING AS235: Only variables, functions and enums become WebAssembly module exports.

 export class Test {
              ~~~~
 in main.ts(1,14)
Run Code Online (Sandbox Code Playgroud)

看到错误后,我尝试通过执行以下操作来修复它:

WARNING AS235: Only variables, functions and enums become WebAssembly module exports.

 export class Test {
              ~~~~
 in main.ts(1,14)
Run Code Online (Sandbox Code Playgroud)

但这导致了另一个错误:

ERROR AS234: Expression does not compile to a value at runtime.

     return Test;
            ~~~~
 in main.ts(8,12)

FAILURE 1 compile error(s)
Run Code Online (Sandbox Code Playgroud)

所以我尝试这样做:

class Test {
    constructor() {
        console.log('Successful!');
    }
};

export function getTest(): Test {
    return Test;
};
Run Code Online (Sandbox Code Playgroud)

编译成功,getTest从 JavaScript 调用后,我在控制台中得到了输出Successful!,但它没有返回启动的类,而是得到了这个:[Number (Internref): 18624]

所以我在互联网上搜索解决方案并找到了这个。但公认的解决方案是使用AssemblyScript Loader,但它已被弃用。我也了解as-bind,但它指出它包装了 AssemblyScript Loader,因此间接地,它也已被弃用。那么如何从 AssemblyScript 导出类呢?

Jai*_*sSW 2

所以,目前还没有办法导出类。但是,您可以从 JavaScript 调用类上的方法,或者调用 get 或 set 方法来修改数据。我相信计划将函数命名为 Vec3#constructor Vec3#magnitude ect..

使用 Assemblyscript 将类从 WebAssembly 导出到 JavaScript?