microsoft / microsoft/TypeScript

Cannot construct optional tuple elements from spreading 0-1 length Array literals

Offen
#43,257 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Domain: check: Type Inference
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

Playground Link

TS 4.0.5, 4.2.2 and 4.3.0-dev20210314

declare let bar: [string, number?];
declare let foo: boolean;
bar = ["", ...[]];
bar = ["", ...[1]];
bar = ["", ...(foo ? [1]: [])];
Type '[string, ...never[]]' is not assignable to type '[string, (number | undefined)?]'.
  Target allows only 2 element(s) but source may have more.(2322)

Type '[string, ...number[]]' is not assignable to type '[string, (number | undefined)?]'.
  Target allows only 2 element(s) but source may have more.(2322)

Type '[string, ...number[]]' is not assignable to type '[string, (number | undefined)?]'.(2322)

Unexpected Errors
Expected ...[] to have no effect when recipient is tuple
Expected ...[1] to resolve into number when recipient is tuple
Expected (foo ? [1]: []) to resolve into a union of the above when recipient is tuple

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem verknüpften TypeScript Playground-Beispiel und reproduziere die Diagnosen für die drei Tupelzuweisungen über die aufgeführten Compiler-Versionen hinweg. Verfolge das Verhalten der Typprüfung von Tupeln und Spreads und verifiziere anschließend, dass leere Spreads, Spreads mit einem Element und bedingte Spreads mit 0–1 Elementen für das optionale Tupel-Element akzeptiert werden, ohne weitergehende Zuweisungsfehler einzuführen.

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.