2016-06-10 7 views
0

Ich möchte eine Eigenschaft someString an die Schnittstelle JQueryStatic hinzufügen, damit ich mit $.someString darauf zugreifen kann.Hinzufügen einer Eigenschaft zur JQueryStatic-Schnittstelle

In index.ts habe ich diesen Code:

interface JQueryStatic { 
    someString: string; 
} 

$.someString = "string"; 

$ vom Typ JQueryStatic jedoch bekomme ich folgende Fehlermeldung:

Property 'someString' does not exist on type 'JQueryStatic'.

Antwort

1

Sie können von einer Umgebungstypdeklaration machen, die die jQuery Typdeklarationen wie folgt erweitert:

declare interface JQueryStatic { 
    someString: string; 
} 

steckte es in eine .d.ts Datei irgendwo in Ihrem Code und stellen Sie sicher, dass es in Ihrer tsconfig.json enthalten ist (oder nicht ausgeschlossen).

Warum funktioniert das?

Das declare Bit ist das, was diese „ambient“ macht - wie in „es irgendwo ein JQueryStatic existiert, das ein someString Mitglied hat“. Typoskript ist intelligent und nimmt, dass es auch eine andere JQueryStatic Umgebungserklärung an anderer Stelle (in Ihrem Fall die jQuery Typisierungen und „verschmilzt“, um sie zusammen in einer einzigen JQueryStatic Interface-Deklaration.

enter image description here

1

Die bestehenden Typinformationen für $ sind in einer Deklarationsdatei (die Sie wahrscheinlich heruntergeladen haben). Wenn Sie möchten, dass Ihre neue Interface-Deklaration in die vorhandenen Schnittstelle fusionieren, setzen Sie Ihre Erklärung in eine jquery-extensions.d.ts Datei:

interface JQueryStatic { 
    someString: string; 
} 

bei Bedarf einen Referenzpfad an der Spitze des Codes zu dieser neuen Datei hinzufügen:

/// <reference path="../path/to/jquery-extensions.d.ts" /> 
Verwandte Themen