Skip to content

Commit 3e7982a

Browse files
crisbetojelbourn
authored andcommitted
refactor: use recommended approach for asserting observables (#18053)
Switches the assertions for whether a value is an observable to use `isObservable`, rather than `value instanceof Observable` which has been the recommended approach since rxjs 6.1. See ReactiveX/rxjs@edb33e5.
1 parent 7a6f763 commit 3e7982a

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

src/cdk/collections/array-data-source.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Observable, of as observableOf} from 'rxjs';
9+
import {Observable, isObservable, of as observableOf} from 'rxjs';
1010
import {DataSource} from './data-source';
1111

1212

@@ -17,7 +17,7 @@ export class ArrayDataSource<T> extends DataSource<T> {
1717
}
1818

1919
connect(): Observable<T[] | ReadonlyArray<T>> {
20-
return this._data instanceof Observable ? this._data : observableOf(this._data);
20+
return isObservable(this._data) ? this._data : observableOf(this._data);
2121
}
2222

2323
disconnect() {}

src/cdk/scrolling/virtual-for-of.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030
TrackByFunction,
3131
ViewContainerRef,
3232
} from '@angular/core';
33-
import {Observable, Subject, of as observableOf} from 'rxjs';
33+
import {Observable, Subject, of as observableOf, isObservable} from 'rxjs';
3434
import {pairwise, shareReplay, startWith, switchMap, takeUntil} from 'rxjs/operators';
3535
import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';
3636

@@ -93,7 +93,7 @@ export class CdkVirtualForOf<T> implements CollectionViewer, DoCheck, OnDestroy
9393
} else {
9494
// Slice the value if its an NgIterable to ensure we're working with an array.
9595
this._dataSourceChanges.next(new ArrayDataSource<T>(
96-
value instanceof Observable ? value : Array.prototype.slice.call(value || [])));
96+
isObservable(value) ? value : Array.prototype.slice.call(value || [])));
9797
}
9898
}
9999
_cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;

src/cdk/table/table.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,14 @@ import {
3737
ViewContainerRef,
3838
ViewEncapsulation
3939
} from '@angular/core';
40-
import {BehaviorSubject, Observable, of as observableOf, Subject, Subscription} from 'rxjs';
40+
import {
41+
BehaviorSubject,
42+
Observable,
43+
of as observableOf,
44+
Subject,
45+
Subscription,
46+
isObservable,
47+
} from 'rxjs';
4148
import {takeUntil} from 'rxjs/operators';
4249
import {CdkColumnDef} from './cell';
4350
import {
@@ -832,7 +839,7 @@ export class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDes
832839

833840
if (isDataSource(this.dataSource)) {
834841
dataStream = this.dataSource.connect(this);
835-
} else if (this.dataSource instanceof Observable) {
842+
} else if (isObservable(this.dataSource)) {
836843
dataStream = this.dataSource;
837844
} else if (Array.isArray(this.dataSource)) {
838845
dataStream = observableOf(this.dataSource);

src/cdk/tree/control/nested-tree-control.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Use of this source code is governed by an MIT-style license that can be
66
* found in the LICENSE file at https://angular.io/license
77
*/
8-
import {Observable} from 'rxjs';
8+
import {Observable, isObservable} from 'rxjs';
99
import {take, filter} from 'rxjs/operators';
1010
import {BaseTreeControl} from './base-tree-control';
1111

@@ -45,7 +45,7 @@ export class NestedTreeControl<T> extends BaseTreeControl<T> {
4545
const childrenNodes = this.getChildren(dataNode);
4646
if (Array.isArray(childrenNodes)) {
4747
childrenNodes.forEach((child: T) => this._getDescendants(descendants, child));
48-
} else if (childrenNodes instanceof Observable) {
48+
} else if (isObservable(childrenNodes)) {
4949
// TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that
5050
// returns a `boolean` specifically in the context of `filter`, so we manually clarify that.
5151
childrenNodes.pipe(take(1), filter(Boolean as () => boolean))

src/cdk/tree/nested-node.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
OnDestroy,
1616
QueryList,
1717
} from '@angular/core';
18-
import {Observable} from 'rxjs';
18+
import {isObservable} from 'rxjs';
1919
import {takeUntil} from 'rxjs/operators';
2020

2121
import {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from './outlet';
@@ -70,7 +70,7 @@ export class CdkNestedTreeNode<T> extends CdkTreeNode<T> implements AfterContent
7070
const childrenNodes = this._tree.treeControl.getChildren(this.data);
7171
if (Array.isArray(childrenNodes)) {
7272
this.updateChildrenNodes(childrenNodes as T[]);
73-
} else if (childrenNodes instanceof Observable) {
73+
} else if (isObservable(childrenNodes)) {
7474
childrenNodes.pipe(takeUntil(this._destroyed))
7575
.subscribe(result => this.updateChildrenNodes(result));
7676
}

src/cdk/tree/tree.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,14 @@ import {
2727
ViewEncapsulation,
2828
TrackByFunction
2929
} from '@angular/core';
30-
import {BehaviorSubject, Observable, of as observableOf, Subject, Subscription} from 'rxjs';
30+
import {
31+
BehaviorSubject,
32+
Observable,
33+
of as observableOf,
34+
Subject,
35+
Subscription,
36+
isObservable,
37+
} from 'rxjs';
3138
import {takeUntil} from 'rxjs/operators';
3239
import {TreeControl} from './control/tree-control';
3340
import {CdkTreeNodeDef, CdkTreeNodeOutletContext} from './node';
@@ -194,7 +201,7 @@ export class CdkTree<T> implements AfterContentChecked, CollectionViewer, OnDest
194201

195202
if (isDataSource(this._dataSource)) {
196203
dataStream = this._dataSource.connect(this);
197-
} else if (this._dataSource instanceof Observable) {
204+
} else if (isObservable(this._dataSource)) {
198205
dataStream = this._dataSource;
199206
} else if (Array.isArray(this._dataSource)) {
200207
dataStream = observableOf(this._dataSource);
@@ -366,7 +373,7 @@ export class CdkTreeNode<T> implements FocusableOption, OnDestroy {
366373
const childrenNodes = this._tree.treeControl.getChildren(this._data);
367374
if (Array.isArray(childrenNodes)) {
368375
this._setRoleFromChildren(childrenNodes as T[]);
369-
} else if (childrenNodes instanceof Observable) {
376+
} else if (isObservable(childrenNodes)) {
370377
childrenNodes.pipe(takeUntil(this._destroyed))
371378
.subscribe(children => this._setRoleFromChildren(children));
372379
}

0 commit comments

Comments
 (0)