Decorators added and Deprecated decorator implemented

This commit is contained in:
Vladimir Enchev
2015-07-02 15:51:02 +03:00
parent 4acc7a46f2
commit a5aebe3344
2 changed files with 37 additions and 1 deletions

16
declarations.d.ts vendored
View File

@@ -16,7 +16,23 @@ declare var console: Console;
declare var global; declare var global;
declare var require; declare var require;
interface TypedPropertyDescriptor<T> {
enumerable?: boolean;
configurable?: boolean;
writable?: boolean;
value?: T;
get?: () => T;
set?: (value: T) => void;
}
declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;
declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
// Global functions // Global functions
declare function Deprecated(target: Object, key?: string | symbol, value?: any): void;
declare function Log(data: any): void; declare function Log(data: any): void;
declare function log(data: any): void; declare function log(data: any): void;
declare function float(num: number): any; declare function float(num: number): any;

View File

@@ -15,4 +15,24 @@ if (types.isUndefined(global.NSObject)) {
} }
global.XMLHttpRequest = (<any>http).XMLHttpRequest; global.XMLHttpRequest = (<any>http).XMLHttpRequest;
global.alert = dialogs.alert; global.alert = dialogs.alert;
export function Deprecated(target: Object, key?: string | symbol, descriptor?: any) {
if (descriptor) {
var originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`${key} is deprecated`);
return originalMethod.apply(this, args);
}
return descriptor;
} else {
console.log(`${(target && (<any>target).name || target)}} is deprecated`);
return target;
}
}
global.Deprecated = Deprecated;