Método encadeado com async / waitit no TypeScript
Eu tenho uma situação em que preciso chamar um método assíncrono no resultado de um método assíncrono.
class Parent {
constructor(private child: Child) { }
private getChild(): Promise<Child> {
return Promise.resolve(this.child);
}
async getResult(): Promise<Child> {
return await this.getChild()
}
}
class Child {
getText(): Promise<string> {
return Promise.resolve('text');
}
}
let child = new Child();
let container = new Parent(child);
let printText = async () => {
await (await container.getResult()).getText();
}
printText();
Existe uma boa maneira de evitar a necessidade de aguardar duas vezes? Eu acho que gostaria de fazerawait container.getChild().getText();
. Qual é a maneira correta de criar uma API no TypeScript que me permita encadear métodos que retornam promessas e aguardar o resultado com uma única espera?
EDIT: Para esclarecer, esta é mais uma questão de design de API. Existe um padrão melhor para fazer o que estou tentando fazer (chamar um método assíncrono em um objeto retornado por um método assíncrono)? Mesmo que isso signifique fazer algo totalmente diferente?