This commit adds generic to `isPromise` function to help with type inference. PR Close #34168
28 lines
867 B
TypeScript
28 lines
867 B
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {Observable} from 'rxjs';
|
|
|
|
/**
|
|
* Determine if the argument is shaped like a Promise
|
|
*/
|
|
export function isPromise<T = any>(obj: any): obj is Promise<T> {
|
|
// allow any Promise/A+ compliant thenable.
|
|
// It's up to the caller to ensure that obj.then conforms to the spec
|
|
return !!obj && typeof obj.then === 'function';
|
|
}
|
|
|
|
/**
|
|
* Determine if the argument is an Observable
|
|
*/
|
|
export function isObservable(obj: any | Observable<any>): obj is Observable<any> {
|
|
// TODO: use isObservable once we update pass rxjs 6.1
|
|
// https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#610-2018-05-03
|
|
return !!obj && typeof obj.subscribe === 'function';
|
|
}
|