Anonymous Symbol Properties

Offen
#64,253 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
typescript
Bereich
compilers

Rechercherichtung

Beginne mit den aktuellen und vorgeschlagenen Typdeklarationen im Issue und verfolge, wie TypeScript berechnete Eigenschaftsschlüssel und die Identitäten von unique symbol behandelt. Die Arbeit ist abgeschlossen, wenn inline-Schlüssel für Eigenschaften vom Typ unique symbol akzeptiert werden, jede Deklaration eine eigene Identität erhält und die Ausgabe von JavaScript zur Laufzeit erhalten bleibt; das Issue nennt keine Implementierungsdateien oder Tests.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Suggestion
🔍 Search Terms

"anonymous symbol properties"
"anonymous unique symbol"
"inline unique symbol"
"unique symbol property key"
"computed property unique symbol"
"symbol branding"

✅ Viability Checklist
⭐ Suggestion

Allow unique symbol keys to be declared inline at the property declaration site.

📃 Motivating Example

Current code:

declare const brand: unique symbol;
type UserId = string & { readonly [brand]: "UserId" };

Proposed code:

type UserId = string & { readonly [brand: unique symbol]: "UserId" };

Each inline declaration would create a fresh symbol identity, equivalent to declaring a separate unique symbol and using it as the computed property key.

This is useful when a unique symbol property key is needed only once and does not need to be referenced independently. Common examples include phantom properties used for branded or refined types.

💻 Use Cases
  1. What do you want to use this for?
    Declaring single-use unique symbol property keys inline, particularly for phantom properties used by branded or refined types.

  2. What shortcomings exist with current approaches?
    The current approach requires introducing a value-level declaration solely to provide a unique identity for a type-level property key. For single-use symbol keys, this creates an otherwise unnecessary binding in the surrounding scope.

  3. What workarounds are you using in the meantime?
    Declaring a separate unique symbol value and using it as a computed property key.

Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/TypeScript

Alle Issues in microsoft/TypeScript

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

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