打字稿文件中使用jQuery插件
我使用打字稿对我公司项目的第一次,我有这个JS文件:打字稿文件中使用jQuery插件
/// <reference path="jquery.d.ts" />
/// <reference path="bootstrap-switch.d.ts" />
function CreateIdeSkuValidoSwitch() {
$("[name='actived_ideskuvalido']").bootstrapSwitch();
}
但是,当我将在我的打字稿函数,编译使用说:类型'jQuery'上不存在属性。
我想知道,我如何使用jQuery插件在我的ts文件中使用jQuery进行切换。
对不起我英语不好。
你的问题不清楚;然而,从您的评论“想象如果我使用没有.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他堆栈,你不应该有问题...
很肯定TS只是编译JS。尝试引用编译的JS文件的路径而不是TS文件。我可能是错的,特别是从星期五开始。 – Devilscomrade
@Devilscomrade当我这样做时,我看到:无法解析引用文件: – soamazing
真的很困惑,如果'jquery.d.ts'和'bootstrap-switch.d.ts'存在于同一目录中,则不应该发生此错误除非找不到定义文件。如果你有像'$(“[name ='actived_ideskuvalido']”)。html('hello')''的代码,你会得到一个错误吗? –