我有这个方法:
isOnPage(): Promise<boolean> {
return this.subtitle.isPresent();
}
typescript编译器给出了这个错误:
Type 'webdriver.promise.Promise<boolean>' is not assignable to type 'Promise<boolean>'
有没有办法将WebDriver承诺转换为本机承诺?
这会有用吗?
isOnPage(): Promise<boolean> {
return new Promise(() => {
return this.subtitle.isPresent();
});
}
答案 0 :(得分:2)
您可以跳过声明返回类型。这仍然会向您显示返回值的正确建议
isOnPage() {
return this.subtitle.isPresent();
}
答案 1 :(得分:0)
import { promise } from 'selenium-webdriver';
...
isOnPage(): promise.Promise<boolean> {
return this.subtitle.isPresent();
}
答案 2 :(得分:0)
@types/selenium-webdriver/index.d.ts
导出名称空间promise
,该名称空间具有实现Promise
(不是PromiseLike
)的类Promise
。
PromiseLike
似乎是typescript/lib/lib.es6.d.ts
中的本机实现,因此您可以将其用作函数的返回类型。区别似乎在于PromiseLike
仅具有then
,而Promise
具有then
和catch
。
isOnPage(): PromiseLike<boolean> {
return this.subtitle.isPresent();
}
答案 3 :(得分:0)
我也更喜欢原生的Promise,并通过以下方式将其转换为它们:
http://db:6379
这允许编写如下代码:
isOnPage(): Promise<boolean> {
return Promise.resolve().then(() => {
return this.subtitle.isPresent();
});
}