2016-07-27 7 views
1

Ich möchte eine Schnittstelle deklarieren, die Schlüssel enthält, die bestimmte Zeichenfolgenwerte enthalten, die die Kombination einer festen Zeichenfolge und eines inkrementellen Werts sind, z. ("first1", "first2", "first", "first4").dynamischer Schlüssel, der eine Verkettung einer bestimmten Zeichenfolge und einer iterativen Ganzzahl in Typoskript enthält

Hier ist der Schlüssel die Verkettung einer festen Zeichenkette, d.h. "erste" und ein Inkrementwert, d. H. (1,2,3,4).

Ich will nicht allgemeines Objekt wie in meinem speziellen Fall verwenden, Schlüssel einige bestimmten Zeichenfolge enthalten sollte

[key: string]: string; 

z.B.

Ich möchte

Object1

{ 
    'user': admin, 
    'login': true, 
    'first1': 1, 
    'first2': 2, 
    'first3': 3; 
    'first4': 4; 
    'first5': 5; 
} 

Objekt 2

{ 
    'user': guest, 
    'login': false, 
    'first1': 1, 
    'first2': 2; 
    'first3': 3; 
} 
+0

Es ist nicht klar, was Sie überhaupt fragen. Bitte bearbeiten Sie Ihre Frage mit einer klaren Erklärung und Beispielen. –

+0

@NitzanTomer Ich habe es aktualisiert. – Ajay

+2

Warum entfernen Sie nicht einfach alle diese Variablen und setzen stattdessen ein Array? Das würde alles vereinfachen. Was du versuchst zu tun, wird dir Kopfschmerzen bereiten. – iberbeu

Antwort

0
eine gemeinsame Schnittstelle für beide Objekte erklären

Sie Typeinschränkungen für spezifische Strings schreiben:

type FirstStrings = "first1" | "first2" | "first3" | "first4"; 

Es ist jedoch nicht möglich, einen Typ als Zeichenfolge festzulegen, die einem Muster entspricht. Es gibt eine suggestion auf Github über das Hinzufügen von Unterstützung dafür.

Bei Indextypen ist es nicht einmal möglich, einen String-Literaltyp zu erstellen. Sie müssen so etwas tun:

interface MyInterface { 
    user: User; 
    login: boolean; 
    first1?: string; 
    first2?: string; 
    first3?: string; 
    first4?: string; 
    first5?: string; 
}