microsoft / microsoft/TypeScript

Error inferring types of promise function

Aperta
#17,873 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Bug Domain: check: Type Inference Has Repro
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

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"].

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione in TypeScript nell’issue, usando l’impostazione lib: ["es6"] mostrata, e confronta l’inferenza per props(input) con la chiamata tipizzata esplicitamente. L’issue è completata quando il risultato inferito è assegnabile a Promise<Map<number, string>> senza argomenti di tipo espliciti e l’errore segnalato non si verifica più.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.