Skip to content

Commit 3aa1988

Browse files
committed
feat(first): support type guards without casting
1 parent 9058bf6 commit 3aa1988

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/operator/first.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,15 @@ import { EmptyError } from '../util/EmptyError';
5353
* @owner Observable
5454
*/
5555
/* tslint:disable:max-line-length */
56-
export function first<T>(this: Observable<T>, predicate?: (value: T, index: number, source: Observable<T>) => boolean): Observable<T>;
57-
export function first<T, S extends T>(this: Observable<T>, predicate?: (value: T, index: number, source: Observable<T>) => value is S): Observable<S>;
56+
export function first<T, S extends T>(this: Observable<T>,
57+
predicate?: ((value: T, index: number, source: Observable<T>) => boolean) |
58+
((value: T, index: number, source: Observable<T>) => value is S)): Observable<S>;
5859
export function first<T>(this: Observable<T>, predicate: (value: T, index: number, source: Observable<T>) => boolean, resultSelector: void, defaultValue?: T): Observable<T>;
59-
export function first<T, S extends T>(this: Observable<T>, predicate: (value: T, index: number, source: Observable<T>) => value is S, resultSelector: void, defaultValue?: S): Observable<S>;
60+
export function first<T, S extends T, R>(this: Observable<T>,
61+
predicate: ((value: T, index: number, source: Observable<T>) => boolean) |
62+
((value: T, index: number, source: Observable<T>) => value is S),
63+
resultSelector?: ((value: S, index: number) => R) | void,
64+
defaultValue?: S): Observable<S>;
6065
export function first<T, R>(this: Observable<T>, predicate?: (value: T, index: number, source: Observable<T>) => boolean, resultSelector?: (value: T, index: number) => R, defaultValue?: R): Observable<R>;
6166
/* tslint:disable:max-line-length */
6267
export function first<T, R>(this: Observable<T>, predicate?: (value: T, index: number, source: Observable<T>) => boolean,

0 commit comments

Comments
 (0)