2017-02-13 175 views
1

函數簽名,所以我想強迫自己總是把一個錯誤函數rxjs的訂閱。所以,我想補充的接口,是這樣的:TypeScript,是否有可能強制現有庫(rxjs)

Observable.prototype.sub = Observable.prototype.subscribe;

所以我提出認購的副本,並繼續進行,但不知何故使用打字稿迫使sub爲具有總是需要提供功能的接口符合

var subscription = source.subscribe(
    x => console.log('onNext: %s', x), 
    e => console.log('onError: %s', e), 
() => console.log('onCompleted') 
); 

這樣,我就無法忘記傳遞誤差函數(和可選的完整功能),當我用我的新創建sub操作

關於

肖恩

回答

1

是的。將Observable的TypeScript接口擴展爲包含您的sub方法非常簡單。

這些內容添加到sub.ts文件:

import { Observable } from "rxjs/Observable"; 
import { PartialObserver } from "rxjs/Observer"; 
import { AnonymousSubscription } from "rxjs/Subscription"; 

Observable.prototype.sub = Observable.prototype.subscribe; 

declare module "rxjs/Observable" { 
    interface Observable<T> { 
    sub: (
     observerOrNext: PartialObserver<T> | ((value: T) => void), 
     error: (error: any) => void, 
     complete?:() => void 
    ) => AnonymousSubscription; 
    } 
} 

和使用它像這樣:

import { Observable } from "rxjs/Observable"; 
import "rxjs/add/observable/of"; 
import "./sub"; 

Observable 
    .of(1) 
    .sub(value => console.log(value)); 

上面的代碼中不包含錯誤處理程序,所以它會影響一個「提供參數不匹配呼叫目標「」錯誤的任何簽名。

僅供參考,我已根據此signature for subscribe上的sub簽名。

+0

謝謝sooooooo多!!!!!! – born2net

相關問題