我在TypeScript上重写了一些JS代码,遇到了模块导入的问题。例如,我想写我的toggleVisiblity
函数。下面是代码:
/// <reference path="../../typings/jquery/jquery.d.ts" />
import * as $ from "jquery";
interface JQuery {
toggleVisibility(): JQuery;
}
$.fn.extend({
toggleVisibility: function () {
return this.each(function () {
const $this = $(this);
const visibility = $this.css('visibility') === 'hidden' ? 'visible' : 'hidden';
$this.css('visibility', visibility);
});
}
});
const jQuery = $('foo');
const value = jQuery.val();
jQuery.toggleVisibility();
字符串
但问题是,由于未知原因,toggleVisibility
没有添加到JQuery
接口,因此我得到一个错误Property 'toggleVisibility' does not exist on type 'JQuery'.
,尽管它看到其他方法(val
,each
等)。
为什么不管用?
的数据
3条答案
按热度按时间9fkzdhlc1#
试着把
字符串
在一个单独的文件中,没有导入/导出语句。这对我来说很有效。虽然知道为什么会很有趣。
编辑:在这个帖子的回答中有一个很好的解释:如何扩展'Window' typescript接口
kfgdxczn2#
我找到了解决方案,这对我很有效:
使用JQueryStatic接口进行静态jQuery访问,如$.jGrowl(...)或jQuery.jGrowl(...)或jQuery.toggleVisibility():
字符串
对于你自己使用jQuery.fn.extend自定义的函数,使用jQuery接口:
型
可选,以下是我的扩展jQuery函数:
型
qq24tv8q3#
我也有类似的问题,但我的bootstrapDP函数以同样的方式扩展了JQuery。
解决方案:
字符串
说明:
这段代码声明了JQuery接口的全局扩展,将我的bootstrapDP方法添加到其中。添加此代码后,TypeScript应该将bootstrapDP识别为jQuery对象上的方法。
以下是一些关于全局增强的文档:link