Я переписываю некоторый код JS на TypeScript и сталкиваюсь с проблемами с импортом модуля. Например, я хочу написать свою функцию toggleVisiblity
. Вот код:Как расширить функции JQuery в TypeScript
/// <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
и так далее).
Почему это не работает?
Это кажется ваш интерфейс 'JQuery' не сливались с исходной. Может быть, он должен быть импортирован. Как вы импортировали определения для jQuery? С новой системой _ @ types_? – Paleo
@Paleo с 'tsd install jQuery --save' afair –