据我所知,如果将泛型变量用作参数,您无法告诉 IntelliSense 哪些字段和方法位于泛型变量上。
如果变量是一个数组,你可以这样定义它:
function funcWithArrayArg(arrayArg) {
/// <param name="arrayArg" type="Array" elementType="Number">An array of numbers</param>
}
在 VS2012 中,您也可以注释对象,就像这样(您可以在用作对象构造函数的函数上注释字段,如下所示,但文档对这样的匿名对象只字未提):
var args = {
/// <field type="Number">Product ID</field>
productID: int
};
这些方法都没有真正做到你想要的,因为第二种方法不会给你函数参数的智能感知,而且你无论如何都在使用 VS2010。
我认为你最好的选择是定义一个自定义对象作为该函数的参数对象,毕竟如果你想创建一个自定义对象作为带有智能感知的参数,那么在其他语言中你就是这样做的。它可能看起来像这样:
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;
}
您将在此处获得对象的智能感知(这将显示您在元素中放入的returns
内容):
setProductAsPreviewed(
如果您随后决定创建一个新对象,您将在此处获得 IntelliSense(它会在您添加它们时一一显示每个参数的描述):
setProductAsPreviewed(new ProductPreviewArgs(
我不完全确定元素type
上的属性是否returns
真的会像这样工作,它在 VS2012 中确实如此,正如您现在可能已经预料到的那样,文档在这个主题上令人讨厌;而且我现在没有 VS2010 的副本来测试这些。