传递Arguments的jQuery-Intellisense

iap*_*dev 5 javascript intellisense jquery

我怎样才能实现以下代码示例中的jQuery-Intellisense?

function doSomething($jQueryObject) {
    $jQueryObject.   // I want to have Intellisense here
};

var $parameter = jQuery('body');
doSomething($parameter);
Run Code Online (Sandbox Code Playgroud)

问题是Intellisense不知道函数的参数是jQuery-Object.我怎么能告诉函数参数类型?

我知道我可以在函数中写一些类似的东西

$obj = $j($jQueryObject);
Run Code Online (Sandbox Code Playgroud)

创建一个新的jQuery-Objekt,但我想知道是否有另一种解决方法.

Did*_*hys 4

Javascript 是一种松散类型语言,这意味着类型不是显式声明的,而是在运行时内部决定的。

Interllisense无法确定变量的类型(无论使用什么编辑器),因为它根本没有定义。您可以将任何您想要的内容传递给您的doSomething()方法。这是一种强大且灵活的编程方式。不好一面是它可能需要实施一些检查以避免错误/异常

如果您正在构建某种框架或 API 供其他开发人员使用,您应该考虑测试参数的类型。

要测试 jQuery 类型变量,请执行以下操作:

var $obj = $jQueryObject instanceof jQuery
              ? $jQueryObject
              : $($jQueryObject);
Run Code Online (Sandbox Code Playgroud)

注意:为变量名称添加前缀$可以很好地指示使用该函数的开发人员预期变量的 jQuery 性质。

编辑:替换typeof === "jQuery"instanceof jQuery