如何从AssemblyScript导出类?



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

编译此命令:
export class Test {
constructor() {
console.log('Successful!');
}
};

导致此错误:

WARNING AS235: Only variables, functions and enums become WebAssembly module exports.
export class Test {
~~~~
in main.ts(1,14)

看到错误后,我试图修复它:

class Test {
constructor() {
console.log('Successful!');
}
};
export function getTest(): Test {
return Test;
};

但是这导致了另一个错误:

ERROR AS234: Expression does not compile to a value at runtime.
return Test;
~~~~
in main.ts(8,12)
FAILURE 1 compile error(s)

所以我试着这样做:

class Test {
constructor() {
console.log('Successful!');
}
};
export function getTest(): Test {
return new Test();
};

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

所以我在互联网上搜索解决方案,发现了这个。但是可以接受的解决方案是使用AssemblyScript Loader,这是不赞成的。我也知道as-bind,但它声明它封装在AssemblyScript Loader周围,因此,间接地,它也被弃用了。那么我如何从AssemblyScript导出类呢?

所以,目前没有办法导出类。但是,您可以从JavaScript调用类上的方法,或者调用get或set方法来修改数据。我相信计划中会有类似的函数Vec3#constructorVec3#magnitudeect . .

用Assemblyscript从WebAssembly导出类到JavaScript ?

相关内容

  • 没有找到相关文章

最新更新