2015-09-21 90 views
2

我正在編寫一個JavaScript類,並嘗試使用Visual Studio 2013 intellisense將字段聲明爲特定的HTML元素。問題是當我將字段設置爲返回值時,它將智能感知重寫爲返回類型值(即使我知道它是我設置的XML類型)。VS Javascript Intellisense類型被覆蓋

我想知道是否有辦法來防止自動覆蓋的字段類型。

這是一個人爲的例子:

myClass = function myClass() 
{ 
    /// <summary>Dummy class to demonstrate intellisense type overriding</summary> 
    /// <field name="fieldDiv" type="HTMLDivElement">The thing under question</field> 
    fieldDiv = null; 
}; 

myClass.prototype.myFunction = function myFunction() 
{ 
    this.fieldDiv; //Intellisense works correctly as if it was a div element 
    this.fieldDiv = getEl("myDiv"); //This breaks the intellisense 
    this.fieldDiv; //Intellisense now thinks it's a generic dom object 
         //I want it to think it's still a div element 
}; 

我不會介意具有this.field = getEl("myDiv");之後添加的XML標記線。我真的很想要那個div上下文信息。

謝謝!

+0

我什至不知道你可以使用XML註釋來做到這一點,太棒了!也許你需要添加一些東西到'getEl'?這聽起來像它已經知道,它正在返回一個元素,正如intellisense所暗示的那樣。也許你需要一個封裝'getDiv'來內部調用'getEl',但可以用intellisense友好的方式記錄下來?作爲評論而不是答案,因爲a)我以前從來沒有見過這個功能,並且b)可能有一個正確的方法來做到這一點:) –

回答

0

有趣的是,它適用於我的VS2013。在第三行顯示HTMLDivElement類型。 您可以嘗試在您的getEl函數中添加返回類型簽名。根據MSDN(和備註部分具體)。例如:

function trim() { 
    /// <signature> 
    /// <summary>Remove the whitespace from the beginning and end of a string.</summary> 
    /// <param name="str" type="String">The string to trim.</param> 
    /// <returns type="String" /> 
    /// </signature> 
    } 
+0

另一個奇怪的事情是它仍然說它是HTMLDivElement,但它並不是'沒有任何關聯的HTMLDivElement成員/函數(即,當你鍵入'this.fieldDiv.'時,它應該顯示所有DivElement的東西,但它不)。 目前有函數getEl,但它指定了Sys.UI.DomElement的返回類型。我想我希望能夠重寫那種(有點像intellisense類型轉換,但我不知道如何)。問題是我得到了多種類型的HTML元素,所以我不能只是改變它們所有的功能。 – NeuralNoise