Exemplo:
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());
Não, isso também não é possível no texto datilografado.
Mas você poderia fazer algo assim:
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));
Se você sabe que a saída é uma referência, pode usar a macro changetype
assim.
changetype<T>(changetype<usize>(T.decode(buf)));
Você será responsável por garantir que a saída da função de decodificação corresponda à definição do tipo de dados T
.
Isso não é seguro e você precisa saber o que está fazendo.
Obrigado
Comentários muito úteis
Não, isso também não é possível no texto datilografado.
Mas você poderia fazer algo assim: