Ejemplo:
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());
No, esto tampoco es posible en mecanografiado.
Pero podrías hacer algo como esto:
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));
Si sabe que la salida es una referencia, puede usar la macro changetype
esta manera.
changetype<T>(changetype<usize>(T.decode(buf)));
Usted será responsable de asegurarse de que la salida de la función de decodificación coincida con la definición del tipo de datos T
.
Esto no es seguro y necesitaría saber lo que está haciendo.
Gracias
Comentario más útil
No, esto tampoco es posible en mecanografiado.
Pero podrías hacer algo como esto: