如何应用jQuery实例的类型警卫?
我试图为一个可能是jQuery实例的变量应用一个类型警卫。 但是,由于JQuery
是jquery.d.ts
一个接口,我不能在instanceof
使用它。 下面的代码看起来不起作用,我想是因为TS不知道作为jQuery
实例意味着是JQuery
接口的“实例”。
var stringOrJQuery: string | JQuery;
...
if (stringOrJQuery instanceof jQuery) {
...
// here stringOrJQuery is still string | JQuery
...
}
我正在使用TS 2.0测试版。
你可以检查字符串大小写:
if(typeof stringOrJQuery === 'string') {
// string case
}
else {
// jquery case case
}
或者,您可以通过间接检查来确定jQuery对象,如本问题答案中所描述的那样,例如:
if(stringOrJQuery.jquery !== undefined) { ... // this is a jQuery object
jQuery对象的jquery
字段包含jQuery版本,应该定义。