microsoft / microsoft/TypeScript

Suggestion: Support readonly interfaces in `getSuggestedLibFor...`

Offen
#61,323 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: Error Messages Help Wanted Possible Improvement
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

### 🔍 Search Terms

readonly target library

### ✅ Viability Checklist

- [x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
- [x] This wouldn't change the runtime behavior of existing JavaScript code
- [x] This could be implemented without emitting different JS based on the types of the expressions
- [x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- [x] This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- [x] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

### ⭐ Suggestion

Read-only variants of ECMAScript interfaces are currently not eligible for script target suggestions. This is most noticeable with `ReadonlyArray`, since this type can arise through syntax rather than by referencing the symbol directly.

```ts
[1,2,3].toReversed();
// ~~~~~~~~~~
// Property 'toReversed' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.

([1,2,3] as const).toReversed();
// ~~~~~~~~~~
// Property 'toReversed' does not exist on type 'readonly [1, 2, 3]'.
```

It would be useful if the suggested lib checks could resolve these in the same way.

### 📃 Motivating Example

As above.

### 💻 Use Cases

N/A

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 damit, die vorhandenen getSuggestedLibFor...-Prüfungen und ihre Tests nachzuverfolgen, und vergleiche anschließend, wie veränderbare und readonly-Arrayausdrücke aufgelöst werden. Verwende die gemeldeten toReversed-Beispiele als Akzeptanzfälle; abgeschlossen ist die Aufgabe, wenn beide Formen die passende Zielbibliothek vorschlagen, ohne das Laufzeitverhalten zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

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