我看到声明合并允许我从外部模块声明类的新方法,我可以通过为类的原型上的属性赋值来定义:
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'
}
}
有没有办法做到这一点?