O ile mi wiadomo, nie można powiedzieć, IntelliSense, jakie pola i metody są na zmiennej ogólnej, jeśli jest używany jako parametr.
Jeśli zmienna była tablicą, można określić ją tak:
function funcWithArrayArg(arrayArg) {
/// <param name="arrayArg" type="Array" elementType="Number">An array of numbers</param>
}
W VS2012 można opisywanie przedmiotów, jak również, podobnie jak (można opisywanie pola na funkcje wykorzystywane jako konstruktorów obiektów, jak wykazać poniżej, ale docs powiedzieć nic o anonimowych obiektów takich jak ta):
var args = {
/// <field type="Number">Product ID</field>
productID: int
};
Żadne z tych podejść naprawdę to, co chcesz, a drugie podejście nie daje intellisense na argumencie funkcji i używasz VS2010 w każdym razie.
Myślę, że najlepiej jest zdefiniować obiekt niestandardowy, który będzie używany jako obiekt argumentu tylko dla tej funkcji, po tym wszystkim jest tak, jak zrobiłbyś to w innych językach, jeśli chcesz utworzyć niestandardowy obiekt jako parametr z intellisense. Może to wyglądać mniej więcej tak:
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;
}
dostaniemy intellisense na obiekcie (który pokaże, co trzeba umieścić w elemencie returns
) tutaj:
setProductAsPreviewed(
Jeśli następnie zdecydować się na stworzenie nowy obiekt, co można uzyskać IntelliSense tutaj (który pokaże opisy każdego parametru, jeden po drugim, jak je dodać):
setProductAsPreviewed(new ProductPreviewArgs(
nie jestem do końca pewien, czy type
atrybut na elemencie returns
będzie działał w ten sposób, robi to w VS2012 i jak można się było spodziewać, do tej pory, dokumenty są denerwująco puste w tym temacie; i nie mam kopii VS2010, aby przetestować którykolwiek z tego na teraz.
Czy Twój obiekt 'args' generowane na bieżąco, czy istnieje niestandardowa funkcja, która definiuje typ? – Sean
Są generowane w locie, gdy wywołuję funkcję "productManager.setProductAsPreviewed".Czy dobrym pomysłem byłoby najpierw zdefiniowanie obiektu o pożądanych właściwościach w celu uzyskania intellisensu? Próbowałem tego uniknąć, ponieważ jest to jedyne miejsce, w którym użyję tego obiektu. –
Zmieniono mój komentarz na odpowiedź. Może się mylę, ponieważ większość mojej wiedzy na temat JS intellisense pochodzi z VS2012, więc dałbym mu trochę czasu, aby inni ludzie mogli pomyśleć =] – Sean