Ho utilizzato JavaScript di Visual Studio Intellisense functionality per un po 'di tempo e sono stato per lo più felice con quanto fornisce suggerimenti per API standard, ma ho riscontrato che non riesco a ottenere Visual Studio capire gli oggetti di configurazione (cioè un singolo oggetto con più proprietà opzionali o richieste come argomento di una funzione).Come documentare gli oggetti di configurazione JavaScript in Visual Studio Intellisense
Il official JSDoc syntax suggerisce che se un parametro dovrebbe avere proprietà, si crea una linea separata @param
per ciascuno e per utilizzare la notazione del punto:
/**
* @param {Object} config
* @param {String} config.name
* @param {Number} config.gold
*/
function do_it(config) { ... }
Tuttavia, Visual Studio non riconosce questo - rende config
, config.name
e config.gold
come tre parametri di primo livello separati.
Peggio ancora, la funzionalità di completamento automatico all'interno del corpo del metodo non riconosce i parametri o, tanto meno loro tipi:
L'unica soluzione che sembra venire anche vicino a Visual Studio è quello di scrivere funzioni di costruzione mai chiamate con documentazione appropriata (@constructor
e @property
tag), il che mi fa scrivere un sacco di codice morto e anche andare contro la mentalità senza classe di JavaScript (che è la ragione per cui io se gli oggetti di configurazione sono in primo luogo). Non mi lascia nemmeno scrivere l'oggetto di configurazione!
Non solo, ma so anche che Visual Studio non ne ha bisogno. Ad esempio, quando ho scritto una chiamata a this library function, è stato in grado di capire che l'oggetto argomento ha bisogno di proprietà chiamate id
, source
e target
e ha suggerito quei nomi quando ho creato un oggetto letterale per l'argomento della funzione - e senza linea singola di documentazione. Presumibilmente, è venuto dal semplice fatto che essi erano utilizzato:
Certo, il metodo non generare eccezioni se queste proprietà non sono l'oggetto e non sono del tipo corretto, ma ancora. EDIT: E di recente sono riuscito a replicare l'effetto nel mio codice in qualche modo con i parametri letterali dell'oggetto: ho chiamato una funzione con un oggetto ben definito e mi ha dato suggerimenti Intellisense quando ho richiamato la funzione altrove in il mio codice Ma non ho ancora informazioni di tipo o accesso semantico all'interno del corpo della funzione.
Visual Studio capisce ovviamente il concetto di oggetti di configurazione e sta facendo un po 'di logica per fornire proprietà suggerite. Cos'è questo algoritmo? E come posso sfruttarlo senza manomettere il mio codice?
La parte di documentazione non funziona - non sembra come se VS supporti '@ typedef'. Tuttavia, ho scoperto che VS fornirà i tipi corretti con un costruttore fittizio e typedef, o con i parametri della prima chiamata alla funzione. – TheHansinator
Questo è vero, non è documentato, ma funziona, si otterranno le proprietà dei parametri corretti e i loro tipi. Come detto sopra, non hai proprio bisogno del costruttore fittizio, solo per documentare l'oggetto 'config' che può accadere proprio prima della funzione stessa. Per quanto riguarda la prima chiamata alla funzione, supponiamo che la chiamata alla funzione sia passata a qualcosa che è analizzabile da VS (come quell'oggetto letterale). Stavo cercando di spiegare perché si poteva vedere IntelliSense per alcune librerie, dal momento che si sta già utilizzando JSDoc. Personalmente avrei seguito il primo approccio. – cviejo
Testato con Visual Studio Community 2015 Versione 14.0.23107.0, quale versione stai usando ? – cviejo