microsoft / microsoft/TypeScript
new Map() infers type only from the first item in the iterable
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
Search Terms: map infer type first item
Code
type Lookup = Map<number, boolean | string>;
const foo = new Map([
[1, true],
[2, 'foo']
]);
const bar: Lookup = new Map([
[1, true],
[2, 'foo']
]);
const baz: Lookup = new Map<number, boolean | string>([
[1, true],
[2, 'foo']
]);
Expected behavior: All 3 assignments work.
Actual behavior: The first 2 assignments fail because the type of the map is inferred as Map<number, () => boolean> (because of the first item). The 3rd one works but duplicates the type of the map.
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
Beginne damit, das Verhalten von TypeScript 3.8.3 im verknüpften Playground anhand der drei Map-Beispiele zu reproduzieren. Verfolge, wie der Checker den Typ des an den Map-Konstruktor übergebenen Iterables ableitet, und überprüfe anschließend, dass alle drei Zuweisungen gemischte boolesche und Zeichenfolgenwerte akzeptieren, ohne einen duplizierten expliziten Typ zu erfordern.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 38/100