Type narrowing not working as expected in else
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- compilers
Piste de recherche
Commencez par la reproduction TypeScript Playground liée dans l’issue et confirmez le type inféré de la branche else finale avec strictNullChecks. Suivez le narrowing du flux de contrôle du compilateur pour les conditions if/else enchaînées ; le travail est terminé lorsque l’affectation signalée est acceptée sans affaiblir les autres comportements de narrowing.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
For the following code with strictNullChecks enabled:
interface Base {
a: {} | null;
b: {} | null;
}
function test(base: Base): void {
if (!base.a && !base.b) {
const result: null = null;
} else if (!base.a && base.b) {
const result: {} = base.b;
} else if (base.a && !base.b) {
const result: {} = base.a;
} else {
const result: {} = base.b;
}
}
I'm seeing this error on the last result:
Type '{} | null' is not assignable to type '{}'.
Type 'null' is not assignable to type '{}'.
I expect it to work as the else implies:
!(!base.a && !base.b) && !(!base.a && base.b) && !(base.a && !base.b)
= (base.a || base.b) && (base.a || !base.b) && (!base.a || base.b)
= (base.a || base.b) && (base.a) && (base.b)
note: !base.b and !base.a are canceled out as the expression cannot be true if one
of them is false
= base.a && base.b
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
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.
Autres issues de microsoft/TypeScript
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
microsoft/TypeScript#64322 · 2 commentaires · 1 réaction · 2 personnes assignées ·
-
Possible Improvement
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
microsoft/TypeScript#64278 · 1 commentaire · 1 réaction ·
-
Docs
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
microsoft/TypeScript#64118 · 1 commentaire ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
microsoft/TypeScript#64094 ·
-
Docs
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
microsoft/TypeScript#63959 · 5 commentaires ·
Toutes les issues de microsoft/TypeScript
Issues similaires
-
optimization optimization:agents-md-curator
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
githubnext/gh-aw-cao#13143 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
blinklabs-io/bursa#904 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
yanet-platform/ipfw-go#129 ·
-
bug confmap/provider/googlesecretmanagerprovider needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
open-telemetry/opentelemetry-collector-contrib#51273 · 2 commentaires ·
-
bug: AI Gateway client filter lists "Unknown" twice when NULL and literal Unknown clients coexist Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100