microsoft / microsoft/TypeScript

Allow `satisfies` in string enum member initializers

Offen
#60,060 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

🔍 Search Terms

satisfies, enum

✅ Viability Checklist
⭐ Suggestion

I suggest that TypeScript should allow this:

enum Foo {
  Foo = "Foo" satisfies "Foo"
}

Currently this is treated as a computed enum member and requires number type, despite nothing being actually computed here.

📃 Motivating Example

With isolatedModules/isolatedDeclarations enabled references in enum members are restricted. For example, this does not compile with isolatedDeclarations:

const FOO = "Foo"

enum Foo { Foo = FOO }
// Error: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations.

satisfies here will ensure that Foo is properly typed while not referring to external symbols:

const FOO = "Foo"

enum Foo { Foo = "Foo" satisfies typeof FOO }
💻 Use Cases

See motivating example above.

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 Beispiele für String-Enums mit und ohne satisfies nachzustellen, einschließlich des im Issue beschriebenen Falls isolatedDeclarations. Verfolge anschließend, wie Initialisierer von Enum-Mitgliedern klassifiziert und getestet werden, und prüfe, dass akzeptierte String-Initialisierer die beabsichtigten Typbeschränkungen beibehalten, ohne das ausgegebene JavaScript zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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