microsoft / microsoft/TypeScript
Error inferring types of promise function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
TypeScript Version: nightly (Version 2.5.0-dev.20170816)
Code
(based on DefinitelyTyped/types/bluebird/index.d.ts)
declare function props<K, V>(x: PromiseLike<Map<K, PromiseLike<V> | V>>): Promise<Map<K, V>>;
declare const input: Promise<Map<number, Promise<string>>>;
const out: Promise<Map<number, string>> = props(input);
Expected behavior:
No error.
Actual behavior:
src/a.ts(3,7): error TS2322: Type 'Promise<Map<number, Promise<string>>>' is not assignable to type 'Promise<Map<number, string>>'.
Type 'Map<number, Promise<string>>' is not assignable to type 'Map<number, string>'.
Type 'Promise<string>' is not assignable to type 'string'.
It works if I explicitly specify props<number, string>(input).
The error only reproduces with "lib": ["es6"].
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit der TypeScript-Reproduktion im Issue unter Verwendung der gezeigten Einstellung lib: ["es6"], und vergleichen Sie die Inferenz für props(input) mit dem explizit typisierten Aufruf. Das Issue ist abgeschlossen, wenn das inferierte Ergebnis ohne explizite Typargumente Promise<Map<number, string>> zugewiesen werden kann und der gemeldete Fehler nicht mehr auftritt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100