我正在尝试在Observable上做一个扩展方法
df1
Name Age Sex
0 Tom 34 M
1 Sara 18 NaN
2 Eva 44 F
3 Jack 27 M
4 Laura 30 NaN
但是,我总是遇到编译错误
import { Observable } from 'rxjs/Observable';
declare module 'rxjs/Observable' {
interface Observable<T> {
customFilter<T>(this: Observable<T>): Observable<T>;
}
}
function customFilter<T>(this: Observable<T>) {
return this;
}
Observable.prototype.customFilter = customFilter;
这是我的tsconfig.app.json
ERROR in src/app/utils/observable.extensions.ts(13,1): error TS2693: 'Observable' only refers to a type, but is being used as a value here.
有什么想法吗?
答案 0 :(得分:1)
这是一个微妙的。 rxjs/Observable
模块包含:
export * from 'rxjs-compat/Observable';
您对名为Observable
的已导出接口的扩充正在阻止export *
语句从Observable
中重新导出rxjs-compat/Observable
,就像export interface Observable<T> { ... }
直接写在rxjs/Observable
模块中。 (也许编译器应该在发生这种情况时报告错误。为此,an issue曾一度为此打开过,但由于没有明确说明为何无法报告该错误而关闭了它。)因此,从Observable
导出的rxjs/Observable
的定义仅是扩充中的接口;没有值的含义。
解决方法是将扩展更改为目标rxjs/internal/Observable
(最初声明了Observable
类)而不是rxjs/Observable
,以便您的界面与原始类正确合并。 / p>