|
1 | 1 | import { NgZone } from '@angular/core';
|
2 | 2 | import { Observable } from 'rxjs';
|
3 | 3 |
|
4 |
| -// tslint:disable:ban-types |
5 |
| -type FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T]; |
| 4 | +type MyFunction = (...args: any[]) => any; |
| 5 | +type FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends MyFunction ? K : never }[keyof T]; |
| 6 | +type ReturnTypeOrNever<T> = T extends MyFunction ? ReturnType<T> : never; |
| 7 | +type ParametersOrNever<T> = T extends MyFunction ? Parameters<T> : never; |
6 | 8 | type PromiseReturningFunctionPropertyNames<T> = {
|
7 |
| - [K in FunctionPropertyNames<T>]: ReturnType<T[K]> extends Promise<any> ? K : never |
| 9 | + [K in FunctionPropertyNames<T>]: ReturnTypeOrNever<T[K]> extends Promise<any> ? K : never |
8 | 10 | }[FunctionPropertyNames<T>];
|
9 | 11 | type NonPromiseReturningFunctionPropertyNames<T> = {
|
10 |
| - [K in FunctionPropertyNames<T>]: ReturnType<T[K]> extends Promise<any> ? never : K |
| 12 | + [K in FunctionPropertyNames<T>]: ReturnTypeOrNever<T[K]> extends Promise<any> ? never : K |
11 | 13 | }[FunctionPropertyNames<T>];
|
12 |
| -type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T]; |
13 |
| -// tslint:enable:ban-types |
| 14 | +type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends MyFunction ? never : K }[keyof T]; |
14 | 15 |
|
15 | 16 | export type ɵPromiseProxy<T> = { [K in NonFunctionPropertyNames<T>]: Promise<T[K]> } &
|
16 |
| - { [K in NonPromiseReturningFunctionPropertyNames<T>]: (...args: Parameters<T[K]>) => Promise<ReturnType<T[K]>> } & |
17 |
| - { [K in PromiseReturningFunctionPropertyNames<T>]: (...args: Parameters<T[K]>) => ReturnType<T[K]> }; |
18 |
| - |
| 17 | + { [K in NonPromiseReturningFunctionPropertyNames<T>]: (...args: ParametersOrNever<T[K]>) => Promise<ReturnTypeOrNever<T[K]>> } & |
| 18 | + { [K in PromiseReturningFunctionPropertyNames<T>]: T[K] }; |
19 | 19 |
|
20 | 20 | // DEBUG quick debugger function for inline logging that typescript doesn't complain about
|
21 | 21 | // wrote it for debugging the ɵlazySDKProxy, commenting out for now; should consider exposing a
|
|
0 commit comments