假设我有以下的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
变量是一个对象,那就是Exception,所以我打印了Message属性。如果没有,msg
是一个字符串,我自己打印变量。我的问题是如何让Visual Studio 2010 JavaScript IntelliSense“知道”对象msg的类型,以便在这种情况下我能获得对象类型的正确属性/函数?
答案 0 :(得分:10)
实际上它不仅限于局部变量。您可以使用xml注释来帮助VS:
function foo(message) {
/// <param name="message" type="String"></param>
message. //ctr+space here
}
这并不是你所要求的,但是当你只接受一种类型的论证时它会很有效。
答案 1 :(得分:6)
不幸的是,为了提供更好的Intellisense支持,Visual Studio的“pseudo-execution”JavaScript仍然不够全面。
例如,我写了这个小函数:
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非常局限于局部变量。