microsoft / microsoft/TypeScript
flag to check for type-unreachable code
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le TypeScript Playground lié et reproduisez les deux exemples en utilisant le comportement existant de allowUnreachableCode. Examinez les diagnostics de vérification des types et de code inaccessible autour de ces cas, puis définissez le comportement de l'option pour les retours never et les appels à assertNever. Le travail est terminé lorsque les vérifications de code inaccessible fondées sur les types et les exceptions proposées sont couvertes par des tests du compilateur approuvés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100