Typescript(1.8)で外部ライブラリのプロトタイプを拡張したいと思います。私の場合の外部ライブラリは、NuGetのTypescript Definitionファイルが含まれているgoogle.mapsです。今、私は、ファイルの「extensions.ts」のような距離関数を追加することにより、google.maps.LatLngのプロトタイプを拡張したい:Typescriptで外部ライブラリのプロトタイプを拡張する
/// <reference path="./google.maps.d.ts" />
export {}
declare global {
interface google.maps.LatLng {
distanceTo(google.maps.LatLng): number;
}
}
google.maps.LatLng.prototype.distanceTo = function(other) {
return google.maps.geometry.spherical.computeDistanceBetween(this, other);
}
その後、私はそれを使用したい:
import "./extensions.ts"
let p1 = new google.maps.LatLng(5, 5);
let p2 = new google.maps.LatLng(10, 10);
console.log(p1.distanceTo(p2))
しかし、このコードは多くのエラーでは機能しません。/ これを解決する正しい方法は何ですか? ArrayやStringのようなグローバル宣言を拡張することは、前述のように動作します。here
注:結果のファイルは、あなたがまた、Googleを含む必要が動作するためには、JavaScriptライブラリにマッピング:あなたはほとんどそこにいる
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&key=[your-key-here]&sensor=FALSE"></script>
私はランタイムテストを行なったし、それが動作します。どうもありがとう :) – Crine