2017-02-21 66 views
1

我有这样的方法:将WebDriver承诺转换为本地承诺?

isOnPage(): Promise<boolean> { 
    return this.subtitle.isPresent(); 
} 

的打字稿编译器会发出此错误:

Type 'webdriver.promise.Promise<boolean>' is not assignable to type 'Promise<boolean>' 

有没有办法给webdriver的承诺转化为本地的承诺?

会这样吗?

isOnPage(): Promise<boolean> { 
    return new Promise(() => { 
    return this.subtitle.isPresent(); 
    }); 
} 
+2

'webdriver.promise.Promise'是不同类型比本地'Promise'。 – AntonB

+0

为什么你需要转换为本地承诺? – Gunderson

+0

当项目中有多个承诺实现时,团队会感到困惑。 –

回答

2

你可以跳过声明返回类型这种情况。这仍然会告诉你正确的建议,返回值

isOnPage() { 
    return this.subtitle.isPresent(); 
} 
+0

这是最佳做法吗?看起来像一个体面的想法。 –

+3

不是这个解决方案的忠实粉丝。无论声明的返回类型如何,它仍将具有相同的推断返回类型。从理论上讲,如果您预计它会像ES6'Promise'那样行事,那么它们可能会遇到问题,因为它们有不同的合约。 –

+1

我也认为明确指定返回类型会更好。我会感谢代码示例的工作! – Xotabu4

0
import { promise } from 'selenium-webdriver'; 

... 

isOnPage(): promise.Promise<boolean> { 
    return this.subtitle.isPresent(); 
}