2010-12-18 10 views
10

Powiedzmy mam funkcji javascript poniżej:Niech Visual Studio 2010 JavaScript IntelliSense znać typ obiektu

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

wiem, że jeśli zmienna msg jest obiektem, to jako wyjątek, więc wydrukować wiadomość własność. Jeśli nie, to msg jest ciągiem znaków, a ja sama wypisuję zmienną. Moje pytanie brzmi: w jaki sposób pozwolić Visual Studio 2010 JavaScript IntelliSense "wiedzieć" typ obiektu msg jest, więc dostanę odpowiednie właściwości/funkcje dla typu obiektu w sytuacji takiej jak ta?

Odpowiedz

6

Niestety, JavaScript "pseudo-execution" Visual Studio w celu zapewnienia lepszej obsługi Intellisense nadal nie jest wystarczająco kompleksowy.

Na przykład, napisałem ten mały funkcję:

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 
    } 

}; 

A jeśli go wypróbować VS2010 nie zauważyć, że w obu klauzul Starałem się ograniczyć rodzaju przekazywane w obiekcie i dlatego może dostarczyć lepszych sugestii. Wydaje się więc, że IntelliSense jest dość ograniczona do zmiennych lokalnych.

10

W rzeczywistości nie ogranicza się do zmiennych lokalnych. Możesz pomóc VS za pomocą XML komentarze tak:

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

To nie jest dokładnie to, co prosicie, ale działa świetnie, kiedy przyjmują argument tylko jednego typu.

+0

Znakomita, działa świetnie! +1 –

Powiązane problemy