microsoft / microsoft/TypeScript

Rest element type not recognized for inner array types

Offen
#45,448 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Bug Report

Hello,
The compiler doesn't recognize an inner array type as an "array type" when inferred in a conditional type.

🔎 Search Terms

I searched for array, rest element, inner array type, multidimensional array type.
Couldn't find anything.

⏯ Playground Link

Playground link with relevant code

💻 Code

The compiler complains with the following code:

type PushToTopArray<T, ArrayOfArray extends any[][]> =
	ArrayOfArray extends [infer TopArray, ...infer Rest] ?
		[[T, ...TopArray], ...Rest] :
		never;
🙁 Actual behavior

with error: A rest element type must be an array type. (2574) on ...TopArray.

🙂 Expected behavior

But since ArrayOfArray extends any[][], the inferred TopArray should be of type any[] and therefore satisfy the rest element type.

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 der verknüpften TypeScript Playground-Reproduktion und bestätige den Fehler beim inferierten TopArray-Rest-Element im bedingten Typ. Verfolge die Inferenz bedingter Typen und die Validierung von Rest-Elementen im Compiler, und füge anschließend Tests hinzu, die zeigen, dass das inferierte innere Array akzeptiert wird und die Reproduktion ohne Fehler typgeprüft wird.

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.