Typoskript abgeleitete Klasse nicht die gleiche variable Namen?
Warum kann nicht, Typoskript abgeleitete Klasse die gleiche variable Namen? Auch diese Mitglieder sind privat. Gibt es eine alternative zu diesem, oder mache ich etwas falsch?
class ClassTS {
private nom: string = "ClaseTS";
constructor() {
}
}
class ClassTSDer extends ClassTS {
private nom: string = "ClassTS";
constructor() {
super();
}
}
Fand ich diese beim üben mit TS.
Klasse 'ClassTSDer' falsch extends Basisklasse 'ClaseTS'. Typen
getrennte Erklärungen des Privateigentums 'nom'. ClassTSDerKlasse ClassTSDer
Sie könnte verwenden geschützt; ja, aber wenn ich nicht wollen, verwenden Sie geschützt sind, würde ich einen anderen Namen verwenden?
Nicht "obwohl", sondern weil es private u cant haben den gleichen Namen. U überschreiben möchten Privateigentum( child-Klasse mit denselben Eigenschaften wie in der übergeordneten Klasse immer überschreiben möchte).
"Könnten Sie geschützt" => ich hatte keine Schmerzen einstellen von öffentlichkeit in die Eltern-und Kind-Klasse, und es funktioniert 😀
"Könnten Sie geschützt" => ich hatte keine Schmerzen einstellen von öffentlichkeit in die Eltern-und Kind-Klasse, und es funktioniert 😀
InformationsquelleAutor Angel Angel | 2016-02-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigenschaften müssen unterschiedliche Namen haben.
Denken Sie daran, dass zur Laufzeit JavaScript-Klasse, die Instanzen sind nur Gegenstände, und Gegenstände sind nur Zuordnungen zwischen Schlüssel und Wert. Die property Namen sind die Schlüssel, und Sie können nicht zwei unterschiedliche Schlüssel mit den gleichen Namen.
Diese Antwort rettete meinen einen Tag. Vielen Dank!
InformationsquelleAutor Ryan Cavanaugh
Eigenschaften müssen unterschiedliche Namen haben.
Wenn Sie Blick auf die erzeugte ES5-code können Sie sehen, dass das deklarieren einer Eigenschaft in der abgeleiteten Klasse mit dem gleichen Namen wie eine private Eigenschaft als Eltern überschreiben die Eltern eine so bricht die Kapselung.
In diesem Fall für eine beliebige Funktion aus dem parent aufgerufen wird, wird das Kind führen .nom mit dem Wert "ClassTS" statt "ClaseTs", wie Sie erwarten würden von einem privaten Eigentum.
Nicht der compiler beschweren sich über die geschützt Eigenschaften (obwohl Sie erzeugen die gleiche ES5-code), weil die Erwartung der Kapselung ist nicht mehr da.
InformationsquelleAutor toskv