2016-05-18 8 views
3

Also ich weiß, ich kann Getter/Setter pro Eigenschaft festlegen."Instanzweite" Getter/Setter für die Klasse TypeScript?

export class Person { 
    private _name: string; 

    set name(value) { 
     this._name = value; 
    } 

    get name() { 
     return this._name; 
    } 
} 

Aber gibt es eine Möglichkeit, einen „globalen Instanz weit“ Setter haben, wann immer jede Eigenschaft einer Klasse Instanz auslösen geändert wird? Ohne manuellen Aufruf eines Funktionsaufrufs in jedem Getter/Setter, der diese Triggerfunktion aufruft? Wie ist etwas in TypeScript eingebaut?

Vielen Dank im Voraus.

+0

Für was würden Sie das brauchen? – Bergi

+0

@Bergi Ich möchte ein Ereignis immer dann aussenden, wenn sich die Instanz ändert, anstatt es zu emittieren (oder eine emaillierende Funktion innerhalb der Klasse aufzurufen) in jedem Setter (was auch erfordert, dass ich Setter hinzufüge, wenn ich sie nicht brauche, nur um es zu sein fähig, die Änderungen zu verfolgen). –

+0

Sie müssen also keine Eigenschaften sehen, sondern nur alle Eigenschaften, die die Instanz hat. Sie können ihnen programmatisch Setter hinzufügen. – Bergi

Antwort

5

In TypeScript gibt es dafür weder eine integrierte Methode noch eine JavaScript-Laufzeitfunktion.

Die nächste Sache wäre eine Proxy, die ein zugrunde liegendes Objekt und Intercept-Eigenschaftenzuweisungen umbrechen kann. Aber Sie müssten sicherstellen, dass die Klasseninstanzen verpackt wurden, bevor sie an einen anderen Ort weitergegeben wurden.