扩展打字稿模块

时间:2016-08-10 13:02:28

标签: typescript

我想扩展rxjs Observable。 我按照https://www.typescriptlang.org/docs/handbook/declaration-merging.htmlhttps://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'.

我做错了什么?

1 个答案:

答案 0 :(得分: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()
相关问题