Soweit ich weiß, können Sie IntelliSense nicht sagen, welche Felder und Methoden sich auf einer generischen Variablen befinden, wenn sie als Parameter verwendet wird.
Wenn die Variable ein Array war, konnte man es wie folgt definieren:
function funcWithArrayArg(arrayArg) {
/// <param name="arrayArg" type="Array" elementType="Number">An array of numbers</param>
}
In VS2012 Sie auch Objekte mit Anmerkungen versehen können, wie so (Sie Felder auf Funktionen mit Anmerkungen versehen können als Objektkonstruktoren verwendet, wie ich unten zeigen aber die docs sagen nichts über anonyme Objekte wie diese):
var args = {
/// <field type="Number">Product ID</field>
productID: int
};
wirklich Keiner dieser Ansätze tun, was Sie wollen, wie der zweite Ansatz, den Sie nicht geben intellisense auf dem Funktionsargument würde und Sie verwenden VS2010 sowieso.
Ich denke, Ihre beste Wette ist, ein benutzerdefiniertes Objekt zu definieren als Argument Objekt für diese Funktion nur verwendet werden, nachdem all dies ist, wie Sie es in anderen Sprachen tun würden, wenn Sie ein benutzerdefiniertes Objekt als Parameter erstellen wollen mit IntelliSense. Es könnte wie folgt aussehen:
function ProductPreviewArgs(productId, productName, updateDate, saveItems) {
/// <summary>Creates an object for use as the sole argument to the setProductAsPreviewed function</summary>
/// <param name="productId" type="Number" optional="false">The Product ID</param>
/// <param name="productName" type="String" optional="false">The Product Name</param>
/// <param name="updateDate" type="Date" optional="false">The date the product was last updated</param>
/// <param name="saveItems" type="Boolean" optional="false">Specifies whether or not to save the items</param>
/// <returns type="ProductPreviewArgs">An object intended for use as the sole argument to the setProductAsPreviewed function</returns>
/// <field name="productId" type="Number">The Product ID</field>
/// <field name="productName" type="String">The Product Name</field>
/// <field name="updateDate" type="Date">The date the product was last updated</field>
/// <field name="saveItems" type="Boolean">Specifies whether or not to save the items</field>
this.productId = productId;
this.productName = productName;
this.updateDate = updateDate;
this.saveItems = saveItems;
}
Sie würden intellisense auf dem Objekt bekommen (was zeigen, was Sie in dem returns
Elemente gesetzt haben) hier:
setProductAsPreviewed(
Wenn Sie dann entscheiden, eine erstellen neue Objekt, würden Sie IntelliSense hier (die Sie für jeden Parameter einzeln die Beschreibungen zeigen, wie Sie sie hinzufügen):
setProductAsPreviewed(new ProductPreviewArgs(
ich bin nicht ganz sicher, ob die 012.Attribut auf dem returns
Element wird tatsächlich so funktionieren, es tut in VS2012 und wie Sie inzwischen erwarten können, sind die Dokumente ärgerlich zu diesem Thema nackt; und ich habe keine Kopie von VS2010, um dies jetzt zu testen.
Ist Ihr 'args' Objekt on the fly erzeugt, oder es wird ein benutzerdefinierte Funktion, die den Typ definiert? – Sean
Sie werden im laufenden Betrieb generiert, wenn ich die Funktion 'productManager.setProductAsPreviewed' aufrufen.Wäre es eine gute Idee, zuerst ein Objekt mit den gewünschten Eigenschaften zu definieren, um intellisense zu haben? Ich habe versucht, das zu vermeiden, weil dies der einzige Ort ist, an dem ich dieses Objekt benutzen werde. –
Änderte meinen Kommentar zu einer Antwort. Ich kann mich jedoch irren, da die meisten meiner Kenntnisse über JS intellisense von VS2012 stammen, also würde ich es eine Weile dauern, bis andere denken können =] – Sean