也许是这样的:
interface PromiseDescriptorValue{ (...args: any[]): Promise ; } export function fetchJson (): any { return ( target: Object, propertyKey: string, descriptor: any): TypedPropertyDescriptor > => { const oldMethod = descriptor.value; descriptor.value = function(...args: any[]) { return oldMethod.apply(this, args).then((res: Response) => res.json()); }; return descriptor; }; } class C { @fetchJson () foo(args) { //.... } }