Skip to content

Commit

Permalink
fix(types): fix the promise & observable types to extend jasmine.Spy
Browse files Browse the repository at this point in the history
  • Loading branch information
shairez committed Sep 13, 2018
1 parent 996e806 commit 7aa6e1d
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/spy-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ export interface ObservableSpy<T> {
export type AddSpyOnFunction<T extends (...args: any[]) => any> = T &
jasmine.Spy;

export interface AddSpyOnPromise<T extends Promise<any>> {
export type AddSpyOnPromise<T extends Promise<any>> = {
and: PromiseSpy<Unpacked<T>>;
}
} & jasmine.Spy;

export interface AddSpyOnObservable<T extends Observable<any>> {
export type AddSpyOnObservable<T extends Observable<any>> = {
and: ObservableSpy<Unpacked<T>>;
}
} & jasmine.Spy;

// Wrap the return type of the given function type with the appropriate spy methods
export type AddSpyByReturnTypes<TF extends (...args: any[]) => any> = TF &
Expand All @@ -55,7 +55,10 @@ export type AddSpyByReturnTypes<TF extends (...args: any[]) => any> = TF &
// : never;

// https://github.com/Microsoft/TypeScript/issues/21705#issue-294964744
export type Unpacked<T> = T extends Array<(infer U1)>
? U1: T extends (...args: any[]) => infer U2
export type Unpacked<T> = T extends Array<infer U1>
? U1
: T extends (...args: any[]) => infer U2
? U2
: T extends Promise<infer U3> ? U3 : T extends Observable<infer U4> ? U4 : T;
: T extends Promise<infer U3>
? U3
: T extends Observable<infer U4> ? U4 : T;

0 comments on commit 7aa6e1d

Please sign in to comment.