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
