microsoft / microsoft/TypeScript

Type Selection Queries

Offen
#41,109 2 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

This might be a bit of a crazy idea, but here goes: to enable loose coupling between components we sometimes write Pick<Type, 'a' | 'b' | 'c'>

It would be nice if we could create a type query to select properties with a similar syntax to GraphQL:

e.g:

prop: AType[{a, b, c: { d }]

This would be equivalent to

prop: Pick<AType, 'a' | 'b'> & {c: Pick<AType['c'], 'd'>}

How often would you do that in "the real world" ? definitely more often if you could
How often should you do that? unclear ?

Some real-world code:

    const testFetch = jest.fn()

    class TestOptions extends GraphQlClient.Options {
      public fetch = testFetch
    }
    const response: Pick<Response, 'ok' | 'json'> = {
      ok: true,
      async json() {
        return { data: { auth: { token: testToken } } }
      }
    }
    testFetch.mockResolvedValue(response)

Pick<Response, 'ok' | 'json'> could be Response[{ok, json}]

edit: that's not a great example use case, cause you could just as well do Partial<Response>

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, das bestehende Verhalten von TypeScript bei Pick und Indexed-Access-Typen zu untersuchen, und vergleiche anschließend die vorgeschlagene Syntax für verschachtelte Auswahl mit Abfragen im GraphQL-Stil. Prüfe die Beispiele des Issues und bestimme, ob das Feature einen klaren Anwendungsfall und ein klares Type-System-Design hat. Als erledigt würde gelten, wenn eine vereinbarte Syntax, Semantik und ein Implementierungsplan vorliegen, statt nur einer Beispieltransformation.

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
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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