Website-Suche

Typescript-Typ basierend auf Teilstring-Schlüssel filtern


Sagen wir, wir haben den TypeScript-Typ

type AllTypes = "hello.world"|"love.typescript"|"learn.typescript"|"love.stackoverflow"

Wie kann ich Typen aus AllTypes basierend auf dem Teilstring "typescript" auswählen

Antwort #1

Sie können den Extract<T, U> Utility-Typ verwenden, um nur diejenigen Mitglieder der AllTypes-Union zu extrahieren, die einem geeigneten pattern-Template-Literal-Typ zuweisbar sind (der `$ {string}` enthält, wie in microsoft/TypeScript#40598 implementiert):

type AllTypes = "hello.world" | "love.typescript" | 
  "learn.typescript" | "love.stackoverflow";

type X = Extract<AllTypes, `${string}typescript${string}`>;
// type X = "love.typescript" | "learn.typescript"

Der Typ `$ {string}typescript$ {string}` entspricht allen Zeichenketten, die die Teilzeichenkette "typescript" enthalten, während `$ {string}` jeder Zeichenkette entspricht, einschließlich der leeren Zeichenkette.

Playground-Link zum Code