Assemblyscript: 是否可以在泛型类型上调用静态函数<t>?</t>

创建于 2019-03-15  ·  3评论  ·  资料来源: AssemblyScript/assemblyscript

例子:

class Temp {
  static decode(buf: Uint8Array): Temp {
    return new Temp(); 
  }
}

function decode<T>(buf: Uint8Array): T {
  return T.decode(buf);
}

let a = decode<Temp>(new Uint8Array());
question

最有用的评论

不,这在打字稿中也是不可能的。
但是你可以做这样的事情:

class Base {
  static decode<T>(buf: Uint8Array): T {
    return instantiate<T>(); // `instantiate` is AssemblyScript's builtin
  }
}

class Temp extends Base {
}

let a = Base.decode<Temp>(new Uint8Array(1));

所有3条评论

不,这在打字稿中也是不可能的。
但是你可以做这样的事情:

class Base {
  static decode<T>(buf: Uint8Array): T {
    return instantiate<T>(); // `instantiate` is AssemblyScript's builtin
  }
}

class Temp extends Base {
}

let a = Base.decode<Temp>(new Uint8Array(1));

如果您知道输出是引用,则可以像这样使用changetype宏。

changetype<T>(changetype<usize>(T.decode(buf)));

您将负责确保解码函数的输出与T数据类型的定义相匹配。

这并不安全,您需要知道自己在做什么。

谢谢

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

MaxGraey picture MaxGraey  ·  4评论

solidsnail picture solidsnail  ·  5评论

blooddy picture blooddy  ·  3评论

dcodeIO picture dcodeIO  ·  4评论

jerrywdlee picture jerrywdlee  ·  4评论