microsoft / microsoft/TypeScript

[ID-Prep] Preserve type nodes from function expressions in initialisers

Aperta
#57,677 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Committed Suggestion
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
1g 19h
PR unite (30g)
117

Descrizione

🔍 Search Terms

declaration emit preserve types from functions

✅ Viability Checklist
⭐ Suggestion

Preserve types from function expressions in initializers when emitting declarations.

📃 Motivating Example

// index.ts
type P = {} & { foo: boolean };
export let fn = (p: P, p2:typeof p) => {}

// index-current.d.ts
type P = {} & { foo: boolean };
export declare let fn: (p: P, p2: {
    foo: boolean;
}) => void;
export {};

// index-proposed.d.ts
type P = {} & { foo: boolean };
export declare let fn: (p: P, p2: typeof p2) => void;
export {};

💻 Use Cases
  1. What do you want to use this for?
    This would improvement would can bring us closer to external declaration emitters being a reality.
  2. What shortcomings exist with current approaches?
    An external tool can extract the type from the function expression, but then they would have different declarations. It would be great if, where possible, typescript would also preserve types as written.
  3. What workarounds are you using in the meantime?
    We could force users to always specify the type even when it's obvious from the function expression, but this makes for very frustrating DX

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

Non vengono indicati file sorgente, test o punti di ingresso. Riproduci l’esempio alla base del problema e analizza il comportamento di TypeScript nell’emissione delle dichiarazioni; il lavoro è completato quando i tipi degli inizializzatori delle espressioni di funzione vengono preservati così come sono scritti nella dichiarazione emessa, senza modificare l’output JavaScript.

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

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.