microsoft / microsoft/TypeScript

Incorrect type inference for Record with symbol key

Offen
#37,290 1 Kommentar 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: Nightly

Search Terms: Record, Symbol, symbol as index

Code

export type SN = Record<symbol, number>

const s = Symbol()
const sn: SN = {}

const n = sn[s] // n is of type any instead of number

Expected behavior:

A Record with symbols as key should allow to access properties by symbol with correct type

Actual behavior:

All keys are any type.

Playground Link: http://www.typescriptlang.org/play/?noImplicitAny=false&strictNullChecks=false&strictFunctionTypes=false&strictPropertyInitialization=false&strictBindCallApply=false&noImplicitThis=false&noImplicitReturns=false&alwaysStrict=false&ts=3.9.0-dev.20200308#code/KYDwDg9gTgLgBDAnmYcDKA5OBeOAlYAY2gBMAeAZ0QFsAjCAGwBo4A7AVzuCgD4AoPsVYV4FHOhr0GACgCUgiMNGsAXOiy4A3gF8BQkW3EVWAbQoBdIA

Related Issues: #1863

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

Reproduziere das Beispiel im Issue mit dem TypeScript Nightly Playground oder der gezeigten TypeScript-Version und verfolge anschließend, wie der Compiler den indizierten Zugriff auf Record<symbol, number> verarbeitet. Vergleiche den inferierten Typ von sn[s] mit dem erwarteten number und nutze das verwandte Issue #1863 als Kontext. Als erledigt gilt die Aufgabe, wenn der Zugriff auf einen symbolbasierten Record als number statt als any inferiert wird und ein Regressionstest das Beispiel abdeckt.

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
45/100

Neue Issues direkt in Ihr Postfach

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