Skip to content

Commit b87ab8f

Browse files
cartantbenlesh
authored andcommitted
fix(defer): use overload sig for void factory (#4810)
* test(defer): add failing dtslint test * fix(defer): use overload sig for void factory Closes #4804
1 parent 3b4f29c commit b87ab8f

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

spec-dtslint/observables/defer-spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ it('should infer correctly with function return promise', () => {
1515
it('should support union type returns', () => {
1616
const a = defer(() => Math.random() > 0.5 ? of(123) : of('abc')); // $ExpectType Observable<string | number>
1717
});
18+
19+
it('should infer correctly with void functions', () => {
20+
const a = defer(() => {}); // $ExpectType Observable<never>
21+
});

src/internal/observable/defer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ import { empty } from './empty';
5252
* @name defer
5353
* @owner Observable
5454
*/
55+
export function defer<O extends ObservableInput<any>>(observableFactory: () => O): Observable<ObservedValueOf<O>>;
56+
export function defer(observableFactory: () => void): Observable<never>;
5557
export function defer<O extends ObservableInput<any>>(observableFactory: () => O | void): Observable<ObservedValueOf<O>> {
5658
return new Observable<ObservedValueOf<O>>(subscriber => {
5759
let input: O | void;

0 commit comments

Comments
 (0)