2013-01-22 21 views
4

我使用打字稿0.8.2和https://github.com/borisyankov/DefinitelyTyped/tree/master/jquery打字稿jQuery的無極參數不匹配

隔離問題的最新的JQuery 1.9 .d.ts的定義,我有試圖使一個簡單的打字稿類定義$ .ajax使用.when()和.then()語法進行調用。這裏是我的代碼:

/// <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"); 
     } 
    } 
} 

在這兩種測試情況下,我得到的是說一個編譯時錯誤:

提供的參數不匹配,調用目標和波浪紅色的任何簽名是第一個參數。()方法。他是截圖:

TypeScript JQuery Deferred Compile Problem

據我所知,在.d.ts文件。當()方法的。當過載(選項:任意)和阿賈克斯定義是實現JQueryPromise接口的JQueryXHR類型。

從理論上講,因爲它反映了。當http://api.jquery.com/jQuery.when/

$.when($.ajax("test.aspx")).then(function(data, textStatus, jqXHR){ 
    alert(jqXHR.status); // alerts 200 
}); 

所以我失去了什麼jQuery的文檔()這應該只是罰款?我定義了錯誤嗎?

+0

無關:你是怎麼得到那好看的黑暗主題VS?你有鏈接到下載頁面或指導某處? :) – kornfridge

+0

這不是2012年VS Dark主題的默認外觀嗎?也許這是一個加載項。 – kenstone

回答

8

jQuery的類型文件中可能存在一個細微的錯誤。以下工作:

$.when($.ajax("test.aspx")).then(function(data, textStatus, jqXHR){ 
    alert(jqXHR.status); 
}, null); 

這是因爲類型文件期望您傳遞成功處理程序和失敗處理程序。我將檢查文檔並更新定義以顯示失敗處理程序是可選的。

更新

我已提交了以下更改jQuery的類型定義:

then(doneCallbacks: any, failCallbacks: any, progressCallbacks?: any): JQueryPromise; 

改爲

then(doneCallbacks: any, failCallbacks?: any, progressCallbacks?: any): JQueryPromise; 
+2

該請求已合併,請訪問:https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts – Fenton

+1

是的。這個新文件完全解決了我的問題。謝謝! – kenstone