microsoft / microsoft/TypeScript

Parameters and readonly tuples

Offen
#45,276 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

Bug Report

I've encountered a wrong type inference regarding the Parameters generic when the rest operator and the union of readonly tuples are used together.

🔎 Search Terms

infer, Parameters, readonly.

🕗 Version & Regression Information

I have only tested this on TypeScript 4.3.5.

⏯ Playground Link

Playground link with relevant code

In this example, P1 is correctly inferred, whereas P2 is not.

💻 Code
type F = (...args: readonly [number, string] | readonly [string, number]) => void;
type P = Parameters<F>;
🙁 Actual behavior

The type P is never.

🙂 Expected behavior

One would expect P to be of type readonly [number, string] | readonly [string, number].

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

Beginnen Sie mit dem verknüpften TypeScript Playground-Beispiel und reproduzieren Sie die Inferenz von Parameters für die readonly-Tupel-Union. Verfolgen Sie die Behandlung von Restparametern, Union-Tupeln und Parameters durch den Compiler und überprüfen Sie anschließend, dass P als readonly [number, string] | readonly [string, number] statt als never inferiert 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
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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