typescript - ¿Cómo aplicar un guardia de tipo para una instancia de jQuery?
Estoy tratando de aplicar un guardia de tipo para una variable que podría ser una instancia de jQuery. Sin embargo, como JQuery es una interfaz de jquery.d.ts, no puedo usarla con instanceof. El siguiente código no parece funcionar, supongo que porque TS no "sabe" que ser una instancia de jQuery significa ser "una instancia" de la interfaz JQuery.
var stringOrJQuery: string | JQuery;
...
if (stringOrJQuery instanceof jQuery) {
...
// here stringOrJQuery is still string | JQuery
...
}
Estoy usando TS 2.0 beta.
Respuesta #1
Puedes comprobar el caso de la cadena:
if(typeof stringOrJQuery === 'string') {
// string case
}
else {
// jquery case case
}
Alternativamente, puedes determinar un objeto jQuery mediante verificaciones indirectas como las descritas en las respuestas de esta pregunta, tales como:
if(stringOrJQuery.jquery !== undefined) { ... // this is a jQuery object
el campo jquery del objeto jQuery contiene la versión de jQuery y debería estar definido.
