microsoft / microsoft/TypeScript

Array rest of readonly tuple type incorrectly preserves readonly modifier

Offen
#35,965 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

In Discussion Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

TypeScript Version: 3.8.0-dev.20200101

Search Terms: readonly tuple rest

Code

declare const tuple: readonly [number, ...number[]];

const [a, ...rest] = tuple;
rest[0] = 1;
rest.push(2);

Expected behavior:

rest: number[]
I should be able to modify the resulting array.

Actual behavior:

rest: readonly number[]
Not able to modify the array (even though it is a mutable clone at runtime).

Playground Link: https://www.typescriptlang.org/play/?ts=3.8.0-dev.20200101&ssl=1&ssc=1&pln=5&pc=14#code/CYUwxgNghgTiAEYD2A7AzgF3hgrgBwhAC544phUIBPeAbRRwFsAjEGAGngDoeGW3aAXUEBuAFBjk6LLSiceXOJkHwAvNnyFxSjLQAMK9QEZtITFzw40ACwAUAJgCUIoA

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 unter Verwendung des Beispiels zur Rest-Destrukturierung eines readonly-Tupels. Verfolge, wie der Compiler den Typ von rest ableitet, und überprüfe anschließend, dass das abgeschlossene Verhalten rest[0] = 1 und rest.push(2) ermöglicht und dabei die berichtete Laufzeitsemantik beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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