microsoft / microsoft/TypeScript
types 'new (...args: any) => E' and wrapper types constructor for primitive types have no overlap
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
TypeScript Version: 3.8.3
Code
class TreeSet<E> {
constructor(elementType: new(...args: any) => E) {
if (elementType === Number) { //This condition will always return 'false' since the types 'new (...args: any) => E' and 'NumberConstructor' have no overlap.(2367)
console.log("hello")
}
}
}
new TreeSet(Number)
Actual behavior:
The error is prompted at compile time "This condition will always return 'false' since the types 'new (...args: any) => E' and 'NumberConstructor' have no overlap.(2367)" but compiled code actually runs correctly.
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 la reproduction dans le playground de TypeScript 3.8.3 et la comparaison du constructeur de TreeSet présentée dans l’issue. Suivez le diagnostic du compilateur pour la comparaison entre le type de constructeur générique et NumberConstructor, puis vérifiez le comportement avec l’exemple fourni et assurez-vous que le diagnostic de faux positif n’apparaît plus.
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
- 35/100