Skip to content

Commit 9035acf

Browse files
committed
feat(combinators): improve typings
This allows for `next(1, holdSubject)` to infer that the returned type is a HoldSubject This allows for `next(1, subject)` to infer that the return type is a Subject
1 parent b3408fe commit 9035acf

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

src/combinators/complete.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@ export const complete: CompleteFn = curry2<any, Subject<any> | HoldSubject<any>,
99
) as CompleteFn;
1010

1111
export interface CompleteFn {
12-
(value: any, subject: Subject<any> | HoldSubject<any>): Subject<any> | HoldSubject<any>;
13-
<T>(value: T, subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
12+
(value: any, holdSubject: HoldSubject<any>): HoldSubject<any>;
13+
<T>(value: T, holdSubject: HoldSubject<T>): HoldSubject<T>;
14+
15+
(value: any, subject: Subject<any>): Subject<any>;
16+
<T>(value: T, subject: Subject<T>): Subject<T>;
1417

1518
(value: any): CurriedCompleteFn<any>;
1619
<T>(value: T): CurriedCompleteFn<T>;
1720
}
1821

1922
export interface CurriedCompleteFn<T> {
20-
(subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
23+
(holdSubject: HoldSubject<T>): HoldSubject<T>;
24+
(subject: Subject<T>): Subject<T>;
2125
}

src/combinators/error.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ export const error: ErrorFn = curry2<Error, Subject<any> | HoldSubject<any>, Sub
99
) as ErrorFn;
1010

1111
export interface ErrorFn {
12-
<Err extends Error>(err: Err, subject: Subject<any> | HoldSubject<any>): Subject<any> | HoldSubject<any>;
13-
<Err extends Error, T>(err: Err, subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
12+
<Err extends Error>(err: Err, holdSubject: HoldSubject<any>): HoldSubject<any>;
13+
<Err extends Error>(err: Err, subject: Subject<any>): Subject<any>;
14+
<Err extends Error, T>(err: Err, holdSubject: HoldSubject<T>): HoldSubject<T>;
15+
<Err extends Error, T>(err: Err, subject: Subject<T>): Subject<T>;
1416

1517
<Err extends Error>(err: Err): CurriedErrorFn<any>;
1618
<Err extends Error, T>(err: Err): CurriedErrorFn<T>;
1719
}
1820

1921
export interface CurriedErrorFn<T> {
20-
(subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
22+
(holdSubject: HoldSubject<T>): HoldSubject<T>;
23+
(subject: Subject<T>): HoldSubject<T>;
2124
}

src/combinators/next.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { curry2 } from '@most/prelude';
22

33
import { Subject, HoldSubject } from '../interfaces';
4+
import { sync, hold } from '../';
45

56
export const next: NextFn = curry2<any, Subject<any> | HoldSubject<any>, Subject<any> | HoldSubject<any>>(
67
function next (value: any, subject: Subject<any> | HoldSubject<any>) {
@@ -9,13 +10,17 @@ export const next: NextFn = curry2<any, Subject<any> | HoldSubject<any>, Subject
910
) as NextFn;
1011

1112
export interface NextFn {
12-
(value: any, subject: Subject<any> | HoldSubject<any>): Subject<any> | HoldSubject<any>;
13-
<T>(value: T, subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
13+
(value: any, holdSubject: HoldSubject<any>): HoldSubject<any>;
14+
(value: any, subject: Subject<any>): Subject<any>;
15+
16+
<T>(value: T, holdSubject: HoldSubject<T>): HoldSubject<T>;
17+
<T>(vlaue: T, subject: Subject<T>): Subject<T>;
1418

1519
(value: any): CurriedNextFn<any>;
1620
<T>(value: T): CurriedNextFn<T>;
1721
}
1822

1923
export interface CurriedNextFn<T> {
20-
(subject: Subject<T> | HoldSubject<T>): Subject<T> | HoldSubject<T>;
24+
(holdSubject: HoldSubject<T>): HoldSubject<T>;
25+
(subject: Subject<T>): Subject<T>;
2126
}

0 commit comments

Comments
 (0)