Website-Suche

TypeScript - Wildcard-Eigenschaftsname in Schnittstelle?


Ich weiß, dass du ein vollständiges Platzhalterzeichen auf einer Schnittstelle setzen kannst, um jede gewünschte Eigenschaft zuzulassen, wie zum Beispiel:

interface ITest {
    [wildcard: string]: any;
}

Aber gibt es eine Möglichkeit, dass ein Platzhalter ein Muster für den Eigenschaftsnamen übereinstimmt?

interface ITest {
    /EndOfKeyName$/: boolean;
    /^startOfKeyName/: string;
}

Es muss kein Regex sein, ich versuche nur, ein ideales Szenario zu zeigen. Ich bin mir jedoch nicht sicher, ob das möglich ist.

Antwort #1

AKTUALISIERUNG FÜR TS 4.4: Template Literal Types können jetzt wie unten gezeigt verwendet werden, wie in der doppelten Antwort. Die Funktionalität ist als "Symbol- und Template-String-Muster-Index-Signaturen" dokumentiert.

interface BoolsAndStrings {
    [key: `boolean${string}`]: boolean;
    [key: `string${string}`]: string;
}

TypeScript-Spielplatz

Wenn Sie dies in TypeScript 4.3 oder früher versuchen, wird es Folgendes ergeben:

Ein Indexsignatur-Parameter muss entweder 'string' oder 'number' sein

Verwandte Artikel