Wir haben eine Angular 1.5-Anwendung mit Typescript gebaut, und ich versuche herauszufinden, die beste Art, mit ng.IPromise vs Promise (ES6 Versprechen) umzugehen. Meine Vorliebe würde sein, nur mit dem ES6 Promise-Typ umzugehen. Gibt es eine elegante Möglichkeit, alle angular-js und angular-material (auch im Lieferumfang enthaltenen) Interfaces zu übersteuern, um es6 Versprechen zu nutzen?Verwalten von ES6/2015 Versprechen in Typescript mit einer Angular 1-App
Optionen kann ich mich vorstellen: (es kann getan werden)
- einig d.ts Magie verwenden, dies zu tun
- Cast ES6 Versprechen überall (Arbeiten, aber nicht intuitiv)
- beitragen Quelle zu öffnen, Gabel, welche die Typisierungen für ng und ng Material, und sie Art von ES6 Versprechen zurückzukehren (ich wahrscheinlich dies nur tun sollte, aber nicht sicher, ich habe Zeit für einen Kaninchenbau jetzt)
Erläuterung
Die zugrundeliegende Promise-Implementierung, die von der eckigen Anwendung verwendet wird, ist immer noch $ q (obwohl ich auch Angular-Bluebird-Versprechungen anwende). Ich versuche nur, die beteiligten Typescript-Schnittstellen zu vereinfachen/zu konsolidieren.
$ q Versprechen sollten nicht blind durch native Versprechungen ersetzt werden, da es grundlegende Unterschiede zwischen ihnen gibt. Sie sind verschiedene Dinge. $ q chain kann synchron sein und läuft auf Digest. Dies gilt nicht für andere Versprechensimplementierungen. – estus
Ich verwende immer noch $ q verspricht (Klarstellung hinzugefügt) – Ken
Dann sollten sie zwei verschiedene Schnittstellen bleiben, weil sie auf verschiedene Konstruktoren beziehen. Das haben andere ... Schnittstellen. Sie können sie zu einem gemeinsamen Nenner zusammenfassen, z. IPromise, weil in ES6/TS App $ q und native Versprechungen koexistieren können. Aber es macht sehr wenig Sinn. Versehentliches Verwenden von nativen Versprechen in einem Codeabschnitt, der $ q promise erwartet, ist das Letzte, was Sie tun möchten. Also nochmal, diese Schnittstellen sollten nicht gemischt werden – estus