jQuery-Intellisense для переданных аргументов - PullRequest
5 голосов
/ 12 декабря 2011

Как мне добиться того, чтобы я получил jQuery-Intellisense в следующем примере кода?

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

var $parameter = jQuery('body');
doSomething($parameter);

Проблема в том, что Intellisense не знает, что параметром для функции является jQuery-Object. Как я могу сообщить функции тип параметра?

Я знаю, что мог бы написать в функции что-то вроде

$obj = $j($jQueryObject);

для создания нового jQuery-Objekt, но я хотел бы знать, есть ли другой способ решить эту проблему.

1 Ответ

4 голосов
/ 12 декабря 2011

Javascript - это свободно типизированный язык, который означает, что тип не объявляется явно, но определяется внутренне во время выполнения.

Interllisense не может определить тип переменных (независимо от редактора), потому чтоэто просто не определено.Вы можете передать все, что вы хотите, вашему doSomething() методу.Это мощный и гибкий способ программирования.Сторона bad заключается в том, что может потребоваться реализация некоторых проверок, чтобы избежать ошибок / исключений

Если вы создаете какую-то платформу или API для использования другими разработчиками, вам следует рассмотреть возможность тестирования параметров'type.

Чтобы проверить типизированную переменную jQuery, сделайте следующее:

var $obj = $jQueryObject instanceof jQuery
              ? $jQueryObject
              : $($jQueryObject);

Примечание: добавление к имени переменной префикса $ является хорошим индикатором природы jQuery ожидаемой переменнойдля разработчика, использующего функцию.

Редактировать : заменено typeof === "jQuery" на instanceof jQuery

...