2017-02-21 64 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(); 
}