microsoft / microsoft/TypeScript
?? and ??= behave differently when they shouldn't
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: 4.0.2, Nightly (2020-9-2)
Search Terms:
Nullish coalescing operator
Nullish never
Coalescing never
Nullish coalescing assignment
Code
According to this post usage of ?? and ??= should be equivalent in the sample code below:
const values: { a?: string[] } = { };
delete values.a;
(values.a ?? (values.a = [])).push("hello"); // error
values.a = undefined;
(values.a ?? (values.a = [])).push("hello"); // error
delete values.a;
(values.a ??= []).push("hello");
values.a = undefined;
(values.a ??= []).push("hello");
Expected behavior:
Examples with ?? and ??= should compile and behave similarly.
Actual behavior:
Examples with ?? do not compile (Argument of type 'string' is not assignable to parameter of type 'never'.(2345))
Playground Link:
link
Related Issues:
Didn't find anything similar
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 exécuter l’exemple TypeScript fourni dans le Playground lié et comparez la façon dont ?? et ??= sont vérifiés pour la propriété facultative de tableau de chaînes. C’est terminé lorsque les expressions ?? se compilent et se comportent de manière cohérente avec les exemples ??=, avec une couverture des propriétés supprimées et des propriétés explicitement définies à undefined.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100