microsoft / microsoft/TypeScript
types 'new (...args: any) => E' and wrapper types constructor for primitive types have no overlap
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit der TypeScript 3.8.3-Playground-Reproduktion und dem im Issue gezeigten Vergleich des TreeSet-Konstruktors. Verfolgen Sie die Diagnose des Compilers für den Vergleich zwischen dem generischen Konstruktor-Typ und NumberConstructor, prüfen Sie anschließend das Verhalten anhand des bereitgestellten Beispiels und stellen Sie sicher, dass die False-Positive-Diagnose nicht mehr erscheint.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100