2010-12-18 11 views
10

Diciamo che ho la funzione javascript in basso:Let Visual Studio 2010 JavaScript IntelliSense conosce il tipo di oggetto

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

so che se la variabile msg è un oggetto, è come eccezione, così ho stampare il messaggio proprietà. In caso contrario, lo msg è una stringa e stampo la variabile stessa. La mia domanda è: come posso consentire a Visual Studio 2010 JavaScript IntelliSense di "conoscere" il tipo di oggetto msg, in modo da ottenere le proprietà/funzioni corrette per il tipo di oggetto in una situazione come questa?

risposta

6

Sfortunatamente, lo "pseudo-execution" di JavaScript di Visual Studio per fornire un supporto Intellisense migliore non è ancora abbastanza completo.

Per esempio, ho scritto questa piccola funzione:

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 
    } 

}; 

E se lo provate fuori VS2010 non si accorge che nelle due clausole che ho provato a limitare il tipo di passato-in oggetto e che quindi potrebbe fornire suggerimenti migliori. Quindi, sembra che Intellisense sia piuttosto limitato alle variabili locali.

10

In realtà non è limitato alle variabili locali. È possibile aiutare VS utilizzando i commenti XML in questo modo:

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

Non è esattamente quello che stai chiedendo, ma funziona grande quando si accettano argomento di un solo tipo.

+0

Eccezionale, funziona benissimo! +1 –

Problemi correlati