In Typescript, wie zu beheben Kann die Eigenschaft 'first' nicht definieren

7

Ich versuche, die Unter-Eigenschaft first zu setzen, die in der Name -Schnittstelle definiert ist, aber dann bekomme ich immer einen Fehler, zum Beispiel:

%Vor%

Beim Ausführen bekomme ich den Fehler: Cannot set property 'first' of undefined

Hat jemand eine Idee, um das herauszufinden?

    
Mustafa Dwekat 24.03.2016, 08:54
quelle

3 Antworten

14

Klasseneigenschaften werden bei der Instanziierung nicht automatisch initialisiert. Sie müssen sie manuell mit den entsprechenden Objekten initialisieren - in diesem Fall mit einem Objekt, das die von der Schnittstelle definierten Eigenschaften enthält:

%Vor%

Ein anderer Ansatz - beispielsweise für den Fall, dass mehrere Methoden Eigenschaften für dasselbe Objekt festlegen - besteht darin, die Eigenschaft zunächst auf ein leeres Objekt zu initialisieren, vorzugsweise im Konstruktor:

%Vor%

Bei der aktuellen Konfiguration führt dies jedoch zu einem Kompilierungsfehler beim Zuweisen von {} zu this.name , da die Name Schnittstelle das Vorhandensein eines first und eines% co_de erfordert % Eigenschaft für das Objekt Um diesen Fehler zu beheben, könnte man auf optionale Eigenschaften auf einer Schnittstelle zurückgreifen:

%Vor%     
John Weisz 24.03.2016, 09:08
quelle
4

Sie müssen name für ein Objekt vom Typ Name festlegen (d. h. eine Form, die dieser Schnittstelle entspricht).

Zum Beispiel:

%Vor%     
Ted Nyberg 24.03.2016 09:01
quelle
2

Wenn Sie die Freiheit haben wollen, Änderungen vorzunehmen, können Sie mit ? ,

etwas machen %Vor%

Im obigen Fall, wenn Sie nicht ? verwenden, erhalten Sie etwas wie in setNameSample zum Beispiel, wenn Sie nur first setzen müssen:

  

Geben Sie '{first: any; } 'kann nicht dem Typ' Name 'zugewiesen werden. Eigentum   'last' fehlt in

Hinweis: Ich denke, die vorherige Antwort ist der Weg zu gehen, das ist nur ein hinzugefügt.

    
Angel Angel 24.03.2016 10:22
quelle

Tags und Links