import { TypedEvent } from "./TypedEvent" ; "use strict" ; export type PropertyChangedEvent = { o : object ; propertyName : string ; propertyValue : any ; } ; export abstract class Component { memberof public readonly propertyChangedEvent = new TypedEvent < PropertyChangedEvent > ( ) ; protected param { keyof Component } propertyName memberof protected propertyChanged ( propertyName ) { this . propertyChangedEvent . emit ( { o : this , propertyName : < string > propertyName , propertyValue : this [ propertyName ] } ) ; } }