export function Deprecated( target: Object, key?: string | symbol, descriptor?: any ) { if (descriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`${key.toString()} is deprecated`); return originalMethod.apply(this, args); }; return descriptor; } else { console.log( `${(target && (target).name) || target} is deprecated` ); return target; } } global.Deprecated = Deprecated; export function Experimental( target: Object, key?: string | symbol, descriptor?: any ) { if (descriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`${key.toString()} is experimental`); return originalMethod.apply(this, args); }; return descriptor; } else { console.log( `${(target && (target).name) || target} is experimental` ); return target; } } global.Experimental = Experimental;