小编Jie*_*ang的帖子

在 Typescript 中,为库中的类创建扩展方法

我想向来自库的现有类添加一些方法。

已知一些基本类型,例如StringElement可以通过扩展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)

typescript ionic-framework

8
推荐指数
1
解决办法
4793
查看次数

标签 统计

ionic-framework ×1

typescript ×1