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.
