如何为jQuery实例应用类型保护?

时间:2016-08-08 10:35:13

标签: jquery typescript

我试图为可能是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测试版。

1 个答案:

答案 0 :(得分:3)

您可以检查字符串大小写:

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

或者,您可以通过the ones described in this question's answers之类的间接检查来确定jQuery对象,例如:

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

jQuery对象的jquery field包含jQuery版本,应该定义。