mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
rx.async: added tests; added toPromise operator
This commit is contained in:
parent
6d32569306
commit
f121d2eecc
80
rx.js/rx.async-tests.ts
Normal file
80
rx.js/rx.async-tests.ts
Normal file
@ -0,0 +1,80 @@
|
||||
// Tests for RxJS-Async TypeScript definitions
|
||||
// Tests by Igor Oleinikov <https://github.com/Igorbek>
|
||||
|
||||
/// <reference path="rx.async.d.ts" />
|
||||
|
||||
module Rx.Tests.Async {
|
||||
|
||||
var obsNum: Rx.Observable<number>;
|
||||
var obsStr: Rx.Observable<string>;
|
||||
var sch: Rx.IScheduler;
|
||||
|
||||
function start() {
|
||||
obsNum = Rx.Observable.start(()=> 10, sch, obsStr);
|
||||
obsNum = Rx.Observable.start(()=> 10, sch);
|
||||
obsNum = Rx.Observable.start(()=> 10);
|
||||
}
|
||||
|
||||
function toAsync() {
|
||||
obsNum = Rx.Observable.toAsync(()=> 1, sch)();
|
||||
obsNum = Rx.Observable.toAsync((a1: number)=> a1)(1);
|
||||
obsStr = Rx.Observable.toAsync((a1: string, a2: number)=> a1 + a2.toFixed(0))("", 1);
|
||||
obsStr = Rx.Observable.toAsync((a1: string, a2: number, a3: Date)=> a1 + a2.toFixed(0) + a3.toDateString())("", 1, new Date());
|
||||
obsStr = Rx.Observable.toAsync((a1: string, a2: number, a3: Date, a4: boolean)=> a1 + a2.toFixed(0) + a3.toDateString() + (a4 ? 1 : 0))("", 1, new Date(), false);
|
||||
}
|
||||
|
||||
function fromCallback() {
|
||||
// 0 arguments
|
||||
var func0: (cb: (result: number)=> void)=> void;
|
||||
obsNum = Rx.Observable.fromCallback(func0)();
|
||||
obsNum = Rx.Observable.fromCallback(func0, sch)();
|
||||
obsNum = Rx.Observable.fromCallback(func0, sch, obsStr)();
|
||||
obsNum = Rx.Observable.fromCallback(func0, sch, obsStr, (results: number[]) => results[0])();
|
||||
|
||||
// 1 argument
|
||||
var func1: (a: string, cb: (result: number)=> void)=> number;
|
||||
obsNum = Rx.Observable.fromCallback(func1)("");
|
||||
obsNum = Rx.Observable.fromCallback(func1, sch)("");
|
||||
obsNum = Rx.Observable.fromCallback(func1, sch, {})("");
|
||||
obsNum = Rx.Observable.fromCallback(func1, sch, {}, (results: number[]) => results[0])("");
|
||||
|
||||
// 2 arguments
|
||||
var func2: (a: number, b: string, cb: (result: string) => number) => Date;
|
||||
obsStr = Rx.Observable.fromCallback(func2)(1, "");
|
||||
obsStr = Rx.Observable.fromCallback(func2, sch)(1, "");
|
||||
obsStr = Rx.Observable.fromCallback(func2, sch, {})(1, "");
|
||||
obsStr = Rx.Observable.fromCallback(func2, sch, {}, (results: string[]) => results[0])(1, "");
|
||||
|
||||
// 3 arguments
|
||||
var func3: (a: number, b: string, c: boolean, cb: (result: string) => number) => Date;
|
||||
obsStr = Rx.Observable.fromCallback(func3)(1, "", true);
|
||||
obsStr = Rx.Observable.fromCallback(func3, sch)(1, "", true);
|
||||
obsStr = Rx.Observable.fromCallback(func3, sch, {})(1, "", true);
|
||||
obsStr = Rx.Observable.fromCallback(func3, sch, {}, (results: string[]) => results[0])(1, "", true);
|
||||
|
||||
// multiple results
|
||||
var func0m: (cb: (result1: number, result2: number, result3: number) => void) => void;
|
||||
obsNum = Rx.Observable.fromCallback(func0m, sch, obsStr, (results: number[]) => results[0])();
|
||||
var func1m: (a: string, cb: (result1: number, result2: number, result3: number) => void) => void;
|
||||
obsNum = Rx.Observable.fromCallback(func1m, sch, obsStr, (results: number[]) => results[0])("");
|
||||
var func2m: (a: string, b: number, cb: (result1: string, result2: string, result3: string) => void) => void;
|
||||
obsStr = Rx.Observable.fromCallback(func2m, sch, obsStr, (results: string[]) => results[0])("", 10);
|
||||
}
|
||||
|
||||
function toPromise() {
|
||||
var promiseImpl: {
|
||||
new<T>(resolver: (resolvePromise: (value: T)=> void, rejectPromise: (reason: any)=> void)=> void): Rx.IPromise<T>;
|
||||
};
|
||||
|
||||
var p: IPromise<number> = obsNum.toPromise(promiseImpl);
|
||||
|
||||
p = p.then(x=> x);
|
||||
p = p.then(x=> p);
|
||||
p = p.then(undefined, reason=> 10);
|
||||
p = p.then(undefined, reason=> p);
|
||||
|
||||
var ps: IPromise<string> = p.then(undefined, reason=> "error");
|
||||
ps = p.then(x=> "");
|
||||
ps = p.then(x=> ps);
|
||||
}
|
||||
}
|
||||
26
rx.js/rx.async.d.ts
vendored
26
rx.js/rx.async.d.ts
vendored
@ -1,6 +1,6 @@
|
||||
///<reference path="rx.d.ts" />
|
||||
|
||||
// Type definitions for RxJS-Async package 2.2
|
||||
// Type definitions for RxJS-Async package 2.2.11
|
||||
// Project: http://rx.codeplex.com/
|
||||
// Definitions by: zoetrope <https://github.com/zoetrope>
|
||||
// Revision by: Igor Oleinikov <https://github.com/Igorbek>
|
||||
@ -84,11 +84,29 @@ declare module Rx {
|
||||
fromEvent<T>(element: Node, eventName: string, selector?: (arguments: any[]) => T): Observable<T>;
|
||||
fromEventPattern<T>(addHandler: (handler: Function) => void, removeHandler: (handler: Function) => void, selector?: (arguments: any[])=>T): Observable<T>;
|
||||
|
||||
fromPromise<T>(promise: Promise<T>): Observable<T>;
|
||||
fromPromise<T>(promise: IPromise<T>): Observable<T>;
|
||||
fromPromise<T>(promise: any): Observable<T>;
|
||||
}
|
||||
|
||||
interface Promise<T> {
|
||||
then(onFulfill: (value: T) => any, onReject?: (reason: any) => any): any;
|
||||
interface Observable<T> {
|
||||
/**
|
||||
* Converts an existing observable sequence to an ES6 Compatible Promise
|
||||
* @example
|
||||
* var promise = Rx.Observable.return(42).toPromise(RSVP.Promise);
|
||||
* @param The constructor of the promise
|
||||
* @returns An ES6 compatible promise with the last value from the observable sequence.
|
||||
*/
|
||||
toPromise<TPromise extends IPromise<T>>(promiseCtor: { new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): TPromise; }): TPromise;
|
||||
toPromise(promiseCtor: { new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): IPromise<T>; }): IPromise<T>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Promise A+
|
||||
*/
|
||||
export interface IPromise<T> {
|
||||
then<R>(onFulfilled?: (value: T) => IPromise<R>, onRejected?: (reason: any) => IPromise<R>): IPromise<R>;
|
||||
then<R>(onFulfilled?: (value: T) => IPromise<R>, onRejected?: (reason: any) => R): IPromise<R>;
|
||||
then<R>(onFulfilled?: (value: T) => R, onRejected?: (reason: any) => IPromise<R>): IPromise<R>;
|
||||
then<R>(onFulfilled?: (value: T) => R, onRejected?: (reason: any) => R): IPromise<R>;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user