让 Visual Studio 2010 JavaScript IntelliSense 知道对象类型

10

假设我有以下 JavaScript 函数:

  function (msg) {
    var divForResult = document.getElementById("test");
    if (typeof (msg) == "object")
    {
      divForResult.innerHTML = "Result: <b>" + msg.Message + "</b>";
    }
    else {
      divForResult.innerHTML = "Result: <b>" + msg + "</b>";
    }
  }

我知道如果msg变量是一个对象,它就是一个异常,所以我打印消息属性。 如果不是,msg是一个字符串,我就打印变量本身。我的问题是如何让Visual Studio 2010 JavaScript IntelliSense“知道”msg的对象类型,这样在类似此类情况下,我将获得正确的对象类型的属性/函数?

2个回答

10

实际上,这并不仅限于局部变量。您可以通过使用类似于以下的XML注释来帮助VS:

function foo(message) {
    /// <param name="message" type="String"></param>
    message. //ctr+space here
}

这不完全是您所要求的,但当您仅接受一种类型的参数时,它非常有效。


6
很遗憾,为了提供更好的Intellisense支持,Visual Studio对JavaScript的“pseudo-execution”仍然不够全面。
例如,我编写了这个小函数:
var foo = function(obj) {
  if (typeof obj === "string") {
    // presumably Intellisense should know obj is a string 
    // in this compound statement but it doesn't.
    // try "obj." here
  }

  if ((typeof obj === "object") && (obj.constructor === Date)) {
    // presumably Intellisense should know obj is a Date 
    // in this compound statement but it doesn't.
    // try "obj." here
  }

};

如果您尝试在VS2010中使用它,它并不会注意到我尝试限制传入对象的类型,并且因此它可以提供更好的建议。因此,Intellisense似乎对局部变量有相当大的限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接