microsoft / microsoft/TypeScript

Autocomplete on extends keyof generic

Aperta
#28,662 8 commenti 44 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Domain: LS: Completion Lists Experience Enhancement Suggestion
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

TypeScript Version: 3.3.0-dev.20181122

Search Terms:

  • autocomplete
  • autocomplete generic
  • generic extends
  • autocomplete keyof extends
  • autocomplete keyof generic

Code

type Except<T, K extends keyof T> = Pick<T, { [P in keyof T]: P extends K ? never : P }[keyof T]>;

interface I1 {
    foo: string;
}
function F1<T extends I1>(): Except<T, ''> { // error is shown but autocomplete is not provided
    //code
    return null;
}

Expected behavior:
Having autocomplete showing when extending a generic

Actual behavior:
Even if error is correctly displayed, no autocomplete is shown for a T extends with a known type on the right hand.

Playground Link:
https://www.typescriptlang.org/play/index.html#src=type%20Except%3CT%2C%20K%20extends%20keyof%20T%3E%20%3D%20Pick%3CT%2C%20%7B%20%5BP%20in%20keyof%20T%5D%3A%20P%20extends%20K%20%3F%20never%20%3A%20P%20%7D%5Bkeyof%20T%5D%3E%3B%0A%0Ainterface%20I1%20%7B%0A%20%20%20%20foo%3A%20string%3B%0A%7D%0Afunction%20F1%3CT%20extends%20I1%3E()%3A%20Except%3CT%2C%20''%3E%20%7B%0A%20%20%20%20%2F%2Fcode%0A%20%20%20%20return%20null%3B%0A%7D

Related Issues:
#16740 - but this one is quite different because it's a keyof issue

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

Riproduci il problema utilizzando il link fornito a TypeScript Playground e l’esempio generico indicato extends keyof. Traccia il percorso dell’autocompletamento di TypeScript per vincoli come T extends I1; il lavoro è completato quando i suggerimenti di completamento compaiono nel punto in cui il problema segnala attualmente un errore senza autocompletamento e il comportamento esistente è coperto da un test appropriato.

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

Valutazione

Stack tecnologico
typescript
Ambito
compilers, developer-experience
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.