本日、TypeScript を 0.8.0.0 から 0.8.1.1 に更新しました。TS コンパイラは、オーバーロードされた関数/メソッドへのパスnull
またはパスについて不平を言うようになりました。undefined
たとえば、Google マップMarker
クラスにはsetMap
2 つのオーバーロードを持つメソッドがあります。これは、間違いなく型付けされたプロジェクトの Google マップ定義ファイルから取得されます。
declare module google.maps {
...
export class Marker extends MVCObject {
...
setMap(map: Map): void;
setMap(map: StreetViewPanorama): void;
...
}
...
}
google maps API v3 docsによると、地図からマーカーを削除するには、その地図を null に設定する必要があります。私は以前にTS 0.8.0.0でこれを持っていましたが、うまくいきました:
var someMarker: google.maps.Marker = (code to initialize marker);
...
someMarker.setMap(null);
TypeScript 0.8.1.1 は、これについて次のメッセージで文句を言います。
あいまいな呼び出し式 - オーバーロードを選択できませんでした。
私が試したものの、うまくいかなかった修正の 1 つはnull
、 TS にgoogle.maps.Map
. これは明らかに間違った構文;
です)
。
someMarker.setMap(null: google.maps.Map);
これが私が今持っている修正で、うまくいくようです。これは、この問題を回避する正しい方法ですか?
var nullMap: google.maps.Map = null;
someMarker.setMap(nullMap);
Google マップの TS 定義ファイルを変更して のオーバーロードを許可する別の修正方法があることは認識していますがsetMap(map: any): void;
、それは悪い解決策のようです。これを回避するために、現在、または将来の TS ビルドで計画されている他の方法はありますか?