2017-05-02 4 views
0

Ich habe eine Schnittstelle, die automatisch mit einigen Standarddaten gefüllt werden soll, wenn ich ihr Variablen zuweise. Die Schnittstelle ist in einem Modul gespeichert und ich möchte sie in anderen Modulen verwenden. Wie weise ich Daten den Schnittstelleneigenschaften zu?Eine Schnittstelleneigenschaft mit Werten füllen

export interface NameAge { 
 
    valueList : Array<{ 'Name', 'Age' }>; 
 
}

So schaffe ich mal in mehreren Modulen einige Variablen sagen, die diese Schnittstelle implementieren.
Wie weise ich der Eigenschaft NameAge einen Standardwert zu. Ich kann es mit einer Klasse tun, die listUsers als öffentliche statische Eigenschaft enthält, aber Schnittstelle mit Klasse nicht ersetzen kann. Auch ich möchte die Schnittstelle und die listUsers Array von Objekten in das gleiche Modul, so dass ich, wenn ich das Modul importieren, bekomme ich sowohl die Schnittstelle und listUsers mit den Standarddaten bereits ausgefüllt. Danke :))

+1

Schnittstellen sind zur Laufzeit nicht verfügbar. Sie sollen einen Vertrag beschreiben, der es Ihnen nicht erlaubt, Standardwerte festzulegen. Sie könnten dafür eine Klasse verwenden. – toskv

Antwort

1

Schnittstellen werden Ihnen nicht erlauben, das zu tun.

Allerdings können Sie es mit Klassen tun.

class NameAge { 
    public valueList: Array<{ 'Name', 'Age' }> = [{ 
     'Name': 'J', 
     'Age': 'ABC' 
    }]; 
} 


class NameAgeChild extends NameAge { 
    public child: boolean 

    public adults() { 
     return this.valueList.filter(v => v.Age >= 18); 
    } 
} 

Dies ist jedoch nur dann sinnvoll, wenn Sie eine Klasse für diesen Wert (Code + Verhalten zusammen) in Ihrer Anwendung benötigen.

Falls nicht, erstellen Sie einfach eine Konstante mit Ihren Werten und verwenden Sie sie beim Erstellen neuer Instanzen.

+0

Super !! Ich dachte dasselbe :) Es ist eine gute Übung, den Objekteigenschaften sogar die Typdefinition hinzuzufügen (zB. ValueList: Array <{'Name': string; 'Age': boolean}> oder einfach say valueList: NameAge. Nochmals vielen Dank :) – Jamie

+0

gut .. Wenn Sie die Eingabe nicht selbst hinzufügen, wird der Compiler höchstwahrscheinlich davon ausgehen, dass es ** any ** wie der Typ der Eigenschaften Name und Age in Ihrem Beispiel sein wird. Sie sollten diese auch eingeben. – toskv

Verwandte Themen