typescript - Hur man tillämpar en typvakt för en jQuery-instans?


Jag försöker att använda en typkontroll för en variabel som kan vara en jQuery-instans. Men eftersom JQuery är ett gränssnitt från jquery.d.ts, kan jag inte använda det med instanceof. Följande kod verkar inte fungera, jag antar att det beror på att TS inte "vet" att att vara en instans av jQuery betyder att vara "en instans" av JQuery-gränssnittet.

var stringOrJQuery: string | JQuery;
...
if (stringOrJQuery instanceof jQuery) {
  ...
  // here stringOrJQuery is still string | JQuery
  ...
}

Jag använder TS 2.0 beta.

Svar #1

Du kan kontrollera strängens stil:

if(typeof stringOrJQuery === 'string') {
    // string case
}
else {
    // jquery case case
}

Alternativt kan du bestämma jQuery-objekt genom indirekta kontroller som de som beskrivs i svaren på den här frågan, såsom:

if(stringOrJQuery.jquery !== undefined) { ... // this is a jQuery object

fältet jquery i jQuery-objektet innehåller jQuery-versionen och bör vara definierad.

Relaterade artiklar