打字稿文件中使用jQuery插件

打字稿文件中使用jQuery插件

问题描述:

我使用打字稿对我公司项目的第一次,我有这个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')''的代码,你会得到一个错误吗? –

你的问题不清楚;然而,从您的评论“想象如果我使用没有.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插件

正如你在这里可以看到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://*.com/questions/26540165/typescript-and-libraries-such-as-jquery-with-d-ts-files – Hitmands