2016-08-10 293 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()