microsoft / microsoft/TypeScript
flag to check for type-unreachable code
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
feature request
the allowUnreachableCode flag (when disabled) only checks for code that's syntactically unreachable. however, the check doesn't work at all when looking at types.
i propose an additional flag (as @RyanCavanaugh suggested keeping these two concerns separate, see https://github.com/microsoft/TypeScript/issues/45267#issuecomment-901297945) that checks for code that the type checker believes is unreachable. for example:
declare function foo(): never
const a = foo()
console.log(1) //no error
foo()
console.log(1) //error
assertNever
in order to allow the assertNever pattern, the flag could still allow unreachable code where an argument of type never is passed, but not code after never is returned. this way, the following code would still be valid:
declare function assertNever(value: never): never
declare const foo: 1|2|3
switch(foo) {
case 1:
break
case 2:
break
case 3:
break
default:
assertNever(foo)
}
🔎 Search Terms
unreachable code
⏯ Playground Link
Playground link with relevant code
💻 Code
if (false) console.log("asdf") //error
if (false as false) console.log("asdf") //no error
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 con il TypeScript Playground collegato e riproduci entrambi gli esempi utilizzando il comportamento esistente di allowUnreachableCode. Leggi le diagnostic della verifica dei tipi e del codice irraggiungibile relativi a questi casi, quindi definisci il comportamento del flag per i ritorni never e le chiamate a assertNever. Il lavoro è concluso quando i controlli del codice irraggiungibile basati sui tipi e le eccezioni proposte sono coperti da test del compilatore concordati.
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