diff --git a/src/compat/proxy.ts b/src/compat/proxy.ts index 127ceadcd..2ea9169bf 100644 --- a/src/compat/proxy.ts +++ b/src/compat/proxy.ts @@ -1,21 +1,21 @@ import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; -// tslint:disable:ban-types -type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T]; +type MyFunction = (...args: any[]) => any; +type FunctionPropertyNames = { [K in keyof T]: T[K] extends MyFunction ? K : never }[keyof T]; +type ReturnTypeOrNever = T extends MyFunction ? ReturnType : never; +type ParametersOrNever = T extends MyFunction ? Parameters : never; type PromiseReturningFunctionPropertyNames = { - [K in FunctionPropertyNames]: ReturnType extends Promise ? K : never + [K in FunctionPropertyNames]: ReturnTypeOrNever extends Promise ? K : never }[FunctionPropertyNames]; type NonPromiseReturningFunctionPropertyNames = { - [K in FunctionPropertyNames]: ReturnType extends Promise ? never : K + [K in FunctionPropertyNames]: ReturnTypeOrNever extends Promise ? never : K }[FunctionPropertyNames]; -type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T]; -// tslint:enable:ban-types +type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends MyFunction ? never : K }[keyof T]; export type ɵPromiseProxy = { [K in NonFunctionPropertyNames]: Promise } & - { [K in NonPromiseReturningFunctionPropertyNames]: (...args: Parameters) => Promise> } & - { [K in PromiseReturningFunctionPropertyNames]: (...args: Parameters) => ReturnType }; - + { [K in NonPromiseReturningFunctionPropertyNames]: (...args: ParametersOrNever) => Promise> } & + { [K in PromiseReturningFunctionPropertyNames]: T[K] }; // DEBUG quick debugger function for inline logging that typescript doesn't complain about // wrote it for debugging the ɵlazySDKProxy, commenting out for now; should consider exposing a