如何从外部模块声明类的新属性?

时间:2018-04-17 22:05:19

标签: typescript

我看到声明合并允许我从外部模块声明类的新方法,我可以通过为类的原型上的属性赋值来定义:

import { Observable } from "./observable";
declare module "./observable" {
    interface Observable<T> {
        map<U>(f: (x: T) => U): Observable<U>;
    }
}
Observable.prototype.map = function (f) {
    // ... another exercise for the reader
}

我想要的是在类上声明新的属性,我可以直接指定或用Object.defineProperty定义:

import { Observable } from "./observable";
declare module "./observable" {
    interface Observable<T> {
        name: string;
    }
}
Object.defineProperty(Observable.prototype, 'name', {
    get: function getName () {
        return 'whatever I want'
    }
}

有没有办法做到这一点?

0 个答案:

没有答案