microsoft / microsoft/TypeScript
Non-null assertions infringe a responsibility of optional chaining
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
Because @RyanCavanaugh couldn't understand what is the problem, I reexplain it.
In the following case, a responsibility of optional chaining is making a return type Element | undefined.
// a is string | null | undefined
const a = document.querySelector('_')?.textContent;
In the following case, non-null assertion has broken the safeness made by optional chaining.
// a is string
const a = document.querySelector('_')?.textContent!;
It is obvious that optional chaining was not considered when non-null assertion operator was designed. TypeScript has to consider what is the best design and what to do via reconsidering the design of non-null assertion operator.
TypeScript Version: 3.7.x-dev.20191105
Search Terms:
Code
const a = document.querySelector('_')?.textContent!;
Expected behavior:
a is string | undefined.
Actual behavior:
a is string.
Playground Link:
Related Issues:
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
Non viene indicato alcun file o test. Inizia riproducendo l’esempio segnalato di controllo dei tipi TypeScript con optional chaining seguito da una non-null assertion, quindi traccia il modo in cui questi operatori determinano il tipo inferito. Il lavoro è completato quando il comportamento è risolto in base al tipo previsto e coperto da un test di regressione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 30/100