2016-11-18 63 views
4

我使用打字稿對我公司項目的第一次,我有這個JS文件:打字稿文件中使用jQuery插件

/// <reference path="jquery.d.ts" /> 
/// <reference path="bootstrap-switch.d.ts" />  
function CreateIdeSkuValidoSwitch() { 
    $("[name='actived_ideskuvalido']").bootstrapSwitch(); 
} 

但是,當我將在我的打字稿函數,編譯使用說:類型'jQuery'上不存在屬性。

我想知道,我如何使用jQuery插件在我的ts文件中使用jQuery進行切換。

對不起我英語不好。

+0

很肯定TS只是編譯JS。嘗試引用編譯的JS文件的路徑而不是TS文件。我可能是錯的,特別是從星期五開始。 – Devilscomrade

+0

@Devilscomrade當我這樣做時,我看到:無法解析引用文件: – soamazing

+0

真的很困惑,如果'jquery.d.ts'和'bootstrap-switch.d.ts'存在於同一目錄中,則不應該發生此錯誤除非找不到定義文件。如果你有像'$(「[name ='actived_ideskuvalido']」)。html('hello')''的代碼,你會得到一個錯誤嗎? –

回答

0

你的問題不清楚;然而,從您的評論「想象如果我使用沒有.ts文件的插件」看起來像你問:我怎樣才能使用一個jQuery插件,還沒有一個.d.ts定義文件。

jQuery在TypeScript中定義的原因是因爲正在使用jQuery定義文件。該文件告訴TypeScript $()是一個函數,它返回一個已知jQuery函數的對象。

如果您創建了一個新的插件,您應該創建一個.d.ts文件,讓您的插件的用戶通過TypeScript引用您的代碼。

如果您使用的插件沒有TypeScript定義文件,您必須自己創建一個定義,或者您可以將您的jQuery對象轉換爲any。第一個選項更好,因爲IDE和編譯器仍然可以幫助你。假設你創建一個新的插件,用「Hello World」替換對象的內容;

(function($) { 
    $.fn.helloWorld = function() { 
     this.html('Hello World'); 
     return this; 
    } 
})(jQuery); 

// Either the plugin author provides the definition, or you write them yourself 
interface JQuery { 
    helloWorld(); 
} 

TypeScript允許您定義一個接口多次,將它與以前的定義相結合,所以上面的定義不會覆蓋現有的定義。

Using jQuery plugin in TypeScript

而且here's an example顯示,您可以添加行爲,以現有的接口

Definitely Typed是資源維持定義文件,使您可以使用常規的JavaScript庫,從您的打字稿,它有許多定義流行的jQuery插件

0

正如你在這裏可以看到https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/bootstrap-switch/bootstrap-switch.d.tsjQuery類型擴展與bootstrapSwitch方法,所以,如果參考被正確添加到t他堆棧,你不應該有問題...

+0

我會嘗試,但問題是,想象一下如果我使用沒有.ts文件的插件。 – soamazing

+0

@soamazing你的問題是如何在TypeScript中使用一個在'.d.ts'文件中沒有打印機定義的插件? –

+0

可能這裏是你需要的:http://stackoverflow.com/questions/26540165/typescript-and-libraries-such-as-jquery-with-d-ts-files – Hitmands