例:
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());
いいえ、これもtypescriptでは不可能です。
しかし、あなたは次のようなことをすることができます:
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
データ型の定義と一致することを確認する責任があります。
これは安全ではありません。何をしているのかを知る必要があります。
ありがとう
最も参考になるコメント
いいえ、これもtypescriptでは不可能です。
しかし、あなたは次のようなことをすることができます: