microsoft / microsoft/TypeScript
Ignored check result of typeof a === typeof b
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
TypeScript Version: 3.2.0-dev.20181025
Search Terms:
Code
type argType = string | number | boolean;
function sort(a: argType, b: argType): number {
if (typeof a !== typeof b) {
return 0;
}
// typeof a should be number now
if (typeof a !== 'number') {
return 0;
}
// typeof b should be number now
return a - b; // Here TS is not sure that b is number
}
Expected behavior:
We have already checked that typeof a is equal typeof b. So if typeof a is number, than and b is number too.
Actual behavior:
error: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
Related Issues:
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 l’exemple de code TypeScript et le lien vers le Playground, puis reproduisez l’erreur signalée avec la version indiquée TypeScript 3.2.0-dev.20181025 ou une build actuelle. Étudiez le narrowing du flux de contrôle pour typeof a !== typeof b avant l’expression arithmétique. Le travail est terminé lorsque l’exemple reconnaît correctement b comme un nombre sans affaiblir la vérification de type associée.
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é
- Plutôt claire
- Accessibilité débutants
- 38/100