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
