/** Property configuration */ export type OverrideDecoratorConfig = { /** Value to set in the prototype */ value ? : any ; /** To define mutable property */ readonly ? : false ; } | { /** Value to set in the prototype */ value : any ; /** To define readonly property */ readonly : true ; } ; param prototypeConfig export function prop ( prototypeConfig = { } ) { return function ( obj , name ) : void { if ( Object . hasOwnProperty . call ( obj , name ) ) { throw new TypeError ( 'Can\'t override own property' ) ; } Object . defineProperty ( obj , name , { value : prototypeConfig . value , writable : ! prototypeConfig . readonly , enumerable : true , configurable : true } ) ; } ; }