网站搜索

javascript - 如何在 TypeScript 中向已实例化的对象添加函数和变量


我正在 TypeScript 中使用 Google Maps Javascript API。在使用该 API 绘制多边形形状后,实际上会创建一个 google.maps.Polygon 对象,并通过回调返回。我想向该对象添加一些函数和变量。

在 TypeScript 中,为一个已实例化的对象添加额外功能和变量,并且提供某种类型信息的现代且正确的方法是什么?

我想向 google.maps.Polygon 添加以下方法

interface Polygon {
        setId(id : number);
        getId(): number;
        getShapeType(): Model.ShapeType;
        setShapeType(shapetype: Model.ShapeType);
}

答案#1

您可以使用 TypeScript 提供的模块增强技术。这里有一个简单的示例(来自官方文档):

// map.ts
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
}


// consumer.ts
import { Observable } from "./observable";
import "./map";
let o: Observable<number>;
o.map(x => x.toFixed());