Свойство 'jqGrid' не существует в значении типа 'JQuery'

Я использую Typescript с jqGrid и jQuery.

в следующей строке:

jQuery(this).jqGrid('editGridRow', rowid, {
    ...

Я получаю сообщение:

свойство ' jqGrid 'не существует для значения типа'JQuery'.

любые идеи о том, как исправить эту проблему?

2 ответов


Я полагаю, что вы используете С помощью jQuery.машинописный текст.DefinetlyTyped Пакет NuGet.

в этом случае добавить файл ~ / Scripts/typings / custom.д.ТС следующего содержания:

/// <reference path="jquery/jquery.d.ts"/>
interface JQuery { jqGrid: any; }

обновление: Вышеуказанное решение является общим и работает во всех случаях. Лучшее решение-это...

установить jqgrid.машинописный текст.DefinitelyTyped Пакет NuGet.


проблема в том, что jQuery grid является плагином. Похоже, у вас есть файл определения для библиотеки JQuery, но не для плагина jQuery Grid. Я проверил https://github.com/borisyankov/DefinitelyTyped и, похоже, нет определения типа для этого конкретного плагина. Есть несколько вещей, которые вы могли бы сделать.

  • вы можете назначить jQuery переменной "любого" типа:

var localJq: любой = jQuery(в этом); localJq.jqGrid ('editGridRow', rowid, { ... });

это обманет компилятор и позволит вам получить доступ к свойствам на var, которые не определены в файле определения.

  • вы можете создать файл определения, который добавляет свойства jqGrid в jquery. На этот файл определения необходимо ссылаться в любых файлах typescript, где используется jqGrid. здесь является примером файла определения для простого плагина JQuery. Как вы можете видеть, это легко расширить определение JQuery дополнительными свойствами.