mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-24 05:06:02 +08:00
106 lines
2.2 KiB
TypeScript
106 lines
2.2 KiB
TypeScript
import * as Observable from 'zen-observable';
|
|
|
|
function assert(val: boolean) {
|
|
if (!val) {
|
|
throw new Error('Assertion Failure');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Observable
|
|
*/
|
|
|
|
new Observable<number>(observer => {
|
|
[1, 2, 3].forEach(one => observer.next(one));
|
|
observer.complete();
|
|
})
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
/**
|
|
* Observable.of
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
/**
|
|
* Observable.from
|
|
*/
|
|
|
|
Observable.from(Observable.of(1, 2, 3))
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
Observable.from([1, 2, 3])
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
Observable.from({
|
|
subscribe(observer: ZenObservable.SubscriptionObserver<number>) {
|
|
[1, 2, 3].forEach(one => observer.next(one));
|
|
observer.complete();
|
|
},
|
|
[Symbol.observable](this: ZenObservable.ObservableLike<number>) {
|
|
return this;
|
|
}
|
|
})
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
Observable.from({
|
|
[Symbol.observable]() {
|
|
return Observable.of(1, 2, 3);
|
|
}
|
|
})
|
|
.subscribe(val => assert(typeof val === 'number'));
|
|
|
|
/**
|
|
* observable.forEach
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.forEach(val => assert(typeof val === 'number'));
|
|
|
|
/**
|
|
* observable.map
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.map(val => val.toString())
|
|
.subscribe(val => assert(typeof val === 'string'));
|
|
|
|
/**
|
|
* observable.filter
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.filter(val => val !== 2)
|
|
.subscribe(val => assert(typeof val === 'number' && val !== 2));
|
|
|
|
/**
|
|
* observable.reduce
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.reduce((acc, val) => acc + val)
|
|
.subscribe(val => assert(val === 6));
|
|
|
|
Observable.of(1, 2, 3)
|
|
.reduce((acc, val) => acc + val, '')
|
|
.subscribe(val => assert(val === '123'));
|
|
|
|
/**
|
|
* observable.flatMap
|
|
*/
|
|
|
|
Observable.of(1, 2, 3)
|
|
.flatMap(val => Observable.of(val.toString()))
|
|
.subscribe(val => assert(typeof val === 'string'));
|
|
|
|
/**
|
|
* ZenObservable
|
|
*/
|
|
|
|
let subscriptionObserver: ZenObservable.SubscriptionObserver<never>;
|
|
let subscription: ZenObservable.Subscription;
|
|
let observer: ZenObservable.Observer<never>;
|
|
let subscriber: ZenObservable.Subscriber<never>;
|
|
let observableLike: ZenObservable.ObservableLike<never>;
|