In einem Transporteur Test ist es möglich, Ketten Aktionen wie „klar“ und „Tastaturbefehle“ auf ein Element wie folgt aus:Wie zu reflektieren (Control) Verkettung von Protractor (WebDriver) Aktionen in Typoskript
element(by.id('myId')).clear().sendKeys('123456789')
I wie der kompakte Stil davon. Aber warum funktioniert es?
Nach den API-Dokumentation von webdriver.Element.clear() der Rückgabetyp von clear() webdriver.promise.Promise.<void>
ist, wenn ich es mit Typoskript (1.8.x) zu kompilieren, beschwert sich der Compiler, dass es keine Eigenschaft sendKeys()
auf Promise
genannt wird. Und ich denke, das ist tatsächlich der Fall.
Ich glaube, das funktioniert zur Laufzeit aufgrund der WebDriver ControlFlow Magic.
Wie kann ich die TypeScript Declaration File von Winkelmesser erweitern, um diese ControlFlow-Magic widerspiegeln und meinen TypeScript-Compiler glücklich machen?
Nun, der korrekte Rückgabewert ist 'this', der kürzlich für explizite Verkettungszwecke hinzugefügt wurde. Es muss ein 'Promise AND this' als Rückgabetyp sein, aber vorausgesetzt,' this' ist bereits ein Versprechen, sollte es funktionieren. –