hidden export class IArrayProperty { grow ! : ( instance ? : any ) => void ; typeName ! : ( ) => string ; getData ! : ( ) => any [ ] ; } hidden export class ArrayProperty < T > extends IArrayProperty { data : T [ ] ; constructor ( ctor , data ? ) { super ( ) ; this . grow = ( instance ? ) => this . data . push ( instance ? instance : new ctor ( ) ) ; this . typeName = ( ) => ctor . name ; this . getData = ( ) => this . data ; this . data = data || [ ] ; } clear ( ) { this . data . length = 0 ; } } hidden export interface SerializedArrayProperty { typeName : string ; data : any [ ] ; }