Skip to content

Commit dedfc6d

Browse files
committed
much stronger typings.
1 parent a64584b commit dedfc6d

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

dist/src/Transformations.d.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ declare type MockObjectMixin<TArguments extends any[], TReturnType> = BaseMockOb
1212
mimicks: (func: (...args: TArguments) => TReturnType) => void;
1313
};
1414
export declare type ObjectSubstitute<T extends Object, K extends Object = T> = ObjectSubstituteTransformation<T> & {
15-
received(amount?: number): K;
16-
didNotReceive(amount?: number): K;
15+
received(amount?: number): TerminatingObject<K>;
16+
didNotReceive(amount?: number): TerminatingObject<K>;
1717
mimick(instance: T): void;
1818
};
19+
declare type TerminatingObject<T> = {
20+
[P in keyof T]: T[P] extends () => infer R ? () => void : T[P] extends (...args: infer F) => infer R ? (...args: F) => void : T[P];
21+
};
1922
declare type ObjectSubstituteTransformation<T extends Object> = {
2023
[P in keyof T]: T[P] extends () => infer R ? NoArgumentFunctionSubstitute<R> : T[P] extends (...args: infer F) => infer R ? FunctionSubstitute<F, R> : PropertySubstitute<T[P]>;
2124
};

dist/src/Transformations.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Transformations.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,18 @@ type MockObjectMixin<TArguments extends any[], TReturnType> = BaseMockObjectMixi
2222
}
2323

2424
export type ObjectSubstitute<T extends Object, K extends Object = T> = ObjectSubstituteTransformation<T> & {
25-
received(amount?: number): K;
26-
didNotReceive(amount?: number): K;
25+
received(amount?: number): TerminatingObject<K>;
26+
didNotReceive(amount?: number): TerminatingObject<K>;
2727
mimick(instance: T): void;
2828
}
2929

30+
type TerminatingObject<T> = {
31+
[P in keyof T]:
32+
T[P] extends () => infer R ? () => void :
33+
T[P] extends (...args: infer F) => infer R ? (...args: F) => void :
34+
T[P];
35+
}
36+
3037
type ObjectSubstituteTransformation<T extends Object> = {
3138
[P in keyof T]:
3239
T[P] extends () => infer R ? NoArgumentFunctionSubstitute<R> :

0 commit comments

Comments
 (0)