2010-12-18 14 views
10

Digamos que tengo la función Javascript a continuación:Deje Visual Studio 2010 JavaScript IntelliSense sabe el tipo de objeto

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>"; 
    } 
    } 

Sé que si la variable msg es un objeto, es como excepción, por lo que imprimir el mensaje propiedad. Si no, el msg es una cadena e imprimo la variable en sí. Mi pregunta es ¿cómo puedo permitir que Visual Studio 2010 JavaScript IntelliSense "sepa" el tipo de objeto que msg es, para que obtenga las propiedades/funciones correctas para el tipo de objeto en una situación como esta?

Respuesta

6

Desafortunadamente, el "pseudo-execution" de Visual Studio de JavaScript para proporcionar una mejor compatibilidad con Intellisense aún no es lo suficientemente completo.

Por ejemplo, escribí esta pequeña función:

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 
    } 

}; 

Y si lo pruebe VS2010 no se da cuenta de que en las dos cláusulas que he tratado de limitar el tipo del pasado-en el objeto y que, por lo tanto, podría proporcionar mejores sugerencias. Entonces, parece que Intellisense está bastante limitado a las variables locales.

10

En realidad, no está limitado a las variables locales. Usted puede ayudar a VS mediante el uso de los comentarios XML como esto:

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

No es exactamente lo que está pidiendo, pero funciona muy bien cuando se está aceptando el argumento de un solo tipo.

+0

¡Excepcional, esto funciona genial! +1 –

Cuestiones relacionadas