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

Jac*_*lin 6 typescript webassembly assemblyscript

我正在尝试使用 Assemblyscript 将 TypeScript 编译为 WebAssembly,并且尝试从 WebAssembly 导出一个类,以便可以在 JavaScript 中使用它。为了澄清,我希望能够在 .js 文件中构造该类的新实例,即使该类是在 .wasm 中定义的。

我做了一些研究和实验,似乎 Assemblyscript 会将类方法导出为函数,而不是将类作为一个整体导出。

这就是我希望它在 WebAssembly 端的外观:

export class Point {
  public x: i32;
  public y: i32;

  constructor(x: i32, y: i32) {
    this.x = x; 
    this.y = y;
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是我想在 JavaScript 方面完成的任务:

// Omitted code for instatiating the Wasm Module

var exports = object.instance.exports; // The exports of the Wasm instance
var Point = exports.Point; // The Point class

let point = new Point(0, 0) // Construct a new Point
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有人知道实现此(或至少类似)功能的方法?

Col*_*inE 0

WebAssembly 有一个非常基本的类型系统,只有四种数字类型。为了将字符串等最基本的类型编译为 WebAssembly,需要创建相当多的“粘合代码”(对于字符串,数据通过线性内存交换)。

要实现您所描述的目标是可能的,但需要创建更多 AssemblyScript 当前能够生成的“粘合代码”。