microsoft / microsoft/TypeScript
Type parameter constrained to an array is not indexable by `${number}`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
🔎 Search Terms
parameter constraint array index indexable number template literal
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
declare function test1<A extends unknown[]>(arr: A): A[number];
declare function test2<A extends unknown[]>(arr: A): A[`${number}`];
🙁 Actual behavior
test2 is an error
🙂 Expected behavior
I expect both to be roughly identical - both should not error here.
Additional information about the issue
I think that this should be OK since https://github.com/microsoft/TypeScript/pull/48837:
- Numeric index signatures apply when the index type is
${number}. For example`Foo[][`${number}`]resolves toFooinstead of being an error. This is consistent with our existing rule that index signatures apply when the index type is a numeric string literal. For exampleFoo[]['0']already resolves toFoo.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere den Fehler mit dem bereitgestellten TypeScript Playground-Link und den Deklarationen test1/test2. Lies das in PR #48837 beschriebene Verhalten und verfolge anschließend die Verarbeitung des indexierten Zugriffs mit Template-Literal sowie füge einen Regressionstest für einen auf Arrays beschränkten Typparameter hinzu. Als erledigt gilt die Aufgabe, wenn test2 konsistent mit test1 akzeptiert wird.
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
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100