Egenskapen 'jqGrid' eksisterer ikke på verdien av typen 'JQuery'


Jeg bruker Typescript med jqGrid og jQuery.

På følgende linje:

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

Jeg får meldingen:

Egenskapen 'jqGrid' eksisterer ikke på verdien av typen 'JQuery'.

Noen ideer om hvordan man kan rette opp dette problemet?

Svar #1

Jeg antar at du bruker jquery.TypeScript.DefinetlyTyped NuGet-pakke.

I så fall legg til filen ~/Scripts/typings/custom.d.ts med følgende innhold:

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

Oppdatering: Løsningen ovenfor er generell og fungerer i alle tilfeller. En bedre løsning er å...

Installer jqgrid.TypeScript.DefinitelyTyped NuGet-pakken.

Svar #2

Problemet er at JQuery-grid er en plugin. Det ser ut som du har en definisjonsfil for JQuery-biblioteket, men ikke for JQuery Grid-pluginen. Jeg sjekket på https://github.com/borisyankov/DefinitelyTyped, og det ser ikke ut til å være en typedefinisjon for denne spesifikke pluginen. Det er noen få ting du kan gjøre.

  • Du kan tildele jQuery til en variabel av typen "any":

var localJq : any=jQuery(this); localJq.jqGrid('editGridRow', rowid, { ... });

Dette vil lure kompilatoren og lar deg få tilgang til egenskaper på variabelen som ikke er definert i en definisjonsfil.

  • Du kan lage en definisjonsfil som legger til jqGrid-egenskapene i jQuery. Denne definisjonsfilen må refereres i alle TypeScript-filer hvor du bruker jqGrid. Her er et eksempel på en definisjonsfil for en enkel jQuery-plugin. Som du kan se, er det enkelt å utvide jQuery-definisjonen med flere egenskaper.

Relaterte artikler