Intellisense не достаточно умен, чтобы следовать ссылке.Возможно, вам все равно не нужно вставлять ссылки в ваше «пространство имен».Я бы сказал, что это даже не пространство имен, а просто замыкание.Учитывая обычный вариант использования, пространство имен является глобальным контейнером для связки связанного кода.Приложение может иметь одну ссылку в глобальной области, и это будет считаться пространством имен приложения.Другие библиотеки, такие как jQuery, будут регистрировать свои собственные значения в глобальной области видимости, которая может рассматриваться как пространство имен.В других случаях вы можете заключить всю область видимости в замыкание, регистрируя пространства имен внутри замыкания, поэтому вам никогда не нужно трогать глобальную область видимости.
Я могу понять, почему вы можете захотеть добавить ссылку в вашу функцию.Этот вид соответствует шаблону интерфейса, так что вы можете поменять эти переменные с помощью фиктивных версий.К сожалению, я не думаю, что вы можете вывести ссылку на Intellisense, и по той же причине (то есть вы могли бы заменить ее чем-либо), что она не может точно сказать, что содержат эти объекты.
В мире со статической типизацией мы на самом деле определяем объекты интерфейса, что позволяет Intellisense отражать введенные ссылки, утверждая, что они, по крайней мере, имеют методы, определенные в интерфейсе.
Я думаю, что единственный вариантВы действительно должны сохранить Intellisense, чтобы обратиться к глобальным ссылкам, которые определяют эти библиотеки.
Обновление
Похоже, Microsoft фактически использовала аннотации типов, чтобы позволить вамявно указать тип аргумента для функции.Я проверил эту версию на наличие ссылки с jQuery
/// <reference path="jquery-1.6.2-vsdoc.js" />
(function ($) {
/// <param name="$" type="jQuery">
/// A rererence to jQuery
/// </param>
})(jQuery);
В версии intellisense jQuery объявляется тип возвращаемого значения jQuery.Предположим, у Knockout есть intellisense, который определяет тип, которым вы можете аннотировать свою функцию таким же образом.В общем, я думаю, что вы можете объявить тип объекта следующим образом:
var someObject = (function() {
/// <returns type="someObject" />
// implementation here, returning object
})();
function (a) {
/// <summary>
/// This function requires a to be a reference to a someObject type
/// </summary>
/// <param name="param" type="someObject">
/// A reference to a someObject type
/// </param>
/// <returns type="String" />
// we now have intellisense on a, treating it as someObject
}
Так что, если вы готовы пройти через процесс добавления аннотаций, вы можете заставить Intellisense работать.