2016-08-10 264 views
0

我想擴展rxjs Observable。 我從以下和https://www.typescriptlang.org/docs/handbook/declaration-merging.html說明https://github.com/Microsoft/TypeScript/issues/2821擴展打字稿模塊

我有2個文件:

rx.ts

/// <reference path="./rx.d.ts" /> 

import { Observable } from 'rxjs/Rx'; 

Observable.prototype.trace = function() { 
    return this.do(x => console.log(x)) 
} 

rx.d.ts

import 'rxjs/Rx' 

export { Observable } from 'rxjs/Rx'; 

declare module "rxjs/Rx" { 
    interface Observable<T> { 
     trace(): Observable<T>; 
     traceMessage(message: string): Observable<T>; 
    } 
} 

rx.ts編譯失敗消息Cannot find name 'Observable'.

我在做什麼錯?

回答

0

首先,不需要在rx.d.ts文件中導出。這應該是足夠的:

// rx.d.ts 
declare module "rxjs/Rx" { 
    interface Observable<T> { 
    trace(): Observable<T>; 
    traceMessage(message: string): Observable<T>; 
    } 
} 

其次,似乎你正在嘗試添加一個實現接口的方法。您應該在Observable接口描述的類上實現該方法。這例如。應該編譯得很好。

// rx.ts 
import { Observable } from 'rxjs/Rx'; 

let theObservable: Observable<any> 
theObservable.trace().trace().trace().trace()