TypeScript 0.8.2 とhttps://github.com/borisyankov/DefinitelyTyped/tree/master/jqueryの最新の JQuery 1.9 .d.ts 定義を使用しています
問題を切り分けるために、.when() および .then() 構文を使用して単一の $.ajax 呼び出しを行う単純な TypeScript クラス定義を用意しました。これが私のコードです:
/// <reference path="../../jquery.d.ts" />
module Demo {
// Class
export class TestDeferred {
// Constructor
constructor() {
$.when(this.testAjaxCall()).then((data, status, jqXHR: JQueryXHR) => {
alert(jqXHR.statusText);
});
$.when($.ajax("test.htm")).then(() => {
console.log("yay");
});
}
testAjaxCall() {
return $.ajax("Test.aspx");
}
}
}
これらのテスト ケースの両方で、次のようなコンパイル時エラーが発生します。
指定されたパラメーターは呼び出しターゲットの署名と一致せず、赤い波線は .when() メソッドの最初のパラメーターにあります。彼はスクリーンショットです:
私の知る限り、.d.ts ファイルの .when() メソッドには .when(options: any) のオーバーロードがあり、.ajax は JQueryPromise インターフェイスを実装する JQueryXHR 型として定義されています。
理論的には、.when() http://api.jquery.com/jQuery.when/の jQuery ドキュメントを反映しているため、これは問題なく機能するはずです。
$.when( $.ajax("test.aspx") ).then(function(data, textStatus, jqXHR){
alert( jqXHR.status ); // alerts 200
});
それで、私は何が欠けていますか?何か間違ったことを定義しましたか?