microsoft / microsoft/TypeScript
Better handling for manually created source files and compiler APIs
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
Search Terms
type checker source file cannot ready property 'members' of undefined
Suggestion
When a user of the compiler API manually creates a source file with ts.createSourceFile instead of retrieving it from their program, and then asks the program for type inference on a contained node, this can crash. See https://github.com/Microsoft/TypeScript/issues/8136 / https://github.com/vuejs/vue-cli/issues/2712 / https://github.com/angular/tsickle/issues/151 / https://github.com/general-language-syntax/TS-GLS/issues/39.
It seems like one of three interpretations might be best:
- This is explicitly unsupported behavior, but for the sake of performance & simplicity, no checks should happen
- This is explicitly unsupported behavior, and a more explicit error should be thrown
- This should become supported behavior, and the program should dynamically create source files as requested
Use Cases
Auto-generated TypeScript files, such as .vue snippets, still want access to a type checker, such as for TSLint rules.
Examples
https://github.com/palantir/tslint/issues/4273
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript / JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. new expression-level syntax)
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo il crash con ts.createSourceFile e una query al type-checker del programma su un nodo del file creato manualmente. Esamina le issue collegate e determina se questo comportamento debba essere non supportato, fallire esplicitamente o essere supportato dinamicamente. Il lavoro è completo quando è stato deciso il comportamento dell’API e sono state realizzate la relativa implementazione e validazione.
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
- Da chiarire
- Idoneità per principianti
- 25/100