Angular 5 的 HttpClient:toPromise() 方法接受哪些参数?

4
如果我尝试像这样返回特定类型的promise:

如果我尝试像这样返回特定类型的promise:

public myMethod(): Promise<MyType> {
  return this.httpClient.get('/my/url').toPromise();
}

当我遇到返回类型为Promise<Object>,而期望的是Promise<MyType>时,会出现错误。通过将结果进行强制类型转换或执行以下操作即可轻松解决:

public myMethod(): Promise<MyType> {
  return this.httpClient.get<MyType>('/my/url').toPromise();
}

不过,提供给toPromise()函数一个可选参数也是一种选择。我的IDE说该参数的类型为"PromiseCtor: PromiseConstructorLike"或者"PromiseCtor: typeof Promise"。

public myMethod(): Promise<MyType> {
  return this.httpClient.get('/my/url').toPromise(???);
}

我无法理解如何满足上面的“???”部分的语法。

有什么关于在此处填充有效参数的想法吗?


我认为它正在寻找 Promise 构造函数。这可以是本地的构造函数,也可以是您喜欢的 Promise 库提供的构造函数。顺便说一下,这并不能帮助您解决 MyType 的问题。 - Bergi
假设您有一种特殊类型的Promise,MyPromise,您将传递该类型(即您的MyPromise的构造函数)。目标不是解决您遇到的问题。目标是返回特定类型的Promise。 - JB Nizet
2个回答

0

你需要在 get<MyType> 方法中指定类型:

public myMethod(): Promise<MyType> {
   return this.httpClient.get<MyType>('/my/url').toPromise();
}

0
public async myMethod(): MyType {
  return await <MyType>this.httpClient.get('/my/url').toPromise();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接