我想向来自库的现有类添加一些方法。
已知一些基本类型,例如String
,Element
可以通过扩展interface
并添加它的prototype
.
interface String {
extFunc():Function;
}
String.prototype.extFunc = function () {
//blabla
};
"a".extFunc();
Run Code Online (Sandbox Code Playgroud)
我还找到了添加扩展方法的方法Observable<T>
。
declare module 'rxjs/Observable' {
interface Observable<T> {
foo: String;
}
}
Observable.prototype.foo= "bar";
console.log(Observable.of("a").foo);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对 NavController(来自 ionic 的库)做同样的事情时,它将覆盖整个 NavController 到我声明的接口。
declare module 'ionic-angular' {
interface NavController {
replace(page: Page): Promise<any>;
}
}
navCtrl.replace(...); //ok
navCtrl.push(...); //original function => "not exist"
Run Code Online (Sandbox Code Playgroud)
有谁知道向这些类添加扩展方法的最佳方法是什么?谢谢~
编辑: 有实际代码
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {GuidePage} from …
Run Code Online (Sandbox Code Playgroud)