J'ai une fonction qui prend une donnée du serveur:
function getData(data){
console.log(data.someVar);
}
Webstorm dit que someVar
- est une variable non résolue. Que puis-je me débarrasser de tels avertissements?
Je vois plusieurs options:
data['some_unres_var']
;De plus, Webstorm me propose de créer un espace de noms pour les "données" (ajoutez une annotation telle que /** @namespace data.some_unres_var*/
), créez ce champ ou renommez-le.
Utilisez JSDoc:
/**
* @param {{some_unres_var:string}} data
*/
function getData(data){
console.log(data.some_unres_var);
}
JSDoc l'objet. Puis ses membres.
/**
* @param data Information about the object.
* @param data.member Information about the object's members.
*/
function getData(data){
console.log(data.member);
}
@property
pour les variables locales (non paramètres){{ member:type }}
_ syntaxe suggérée par Andreas peut être en conflit avec Django templates.Pour documenter des tableaux d'objets , utilisez []
_ entre crochets comme JSDoc suggère :
/**
* @param data
* @param data.array_member[].foo
*/
Toutes les autres réponses sont incorrectes pour le cas général. Que faire si vous n'obtenez pas data
en paramètre? Vous n'avez pas JSDoc alors:
function niceApiCall(parameters) {
const result = await ... // HTTP call to the API here
for (const e of result.entries) {
.. // decorate each entry in the result
}
return result;
}
WebStorm avertira que "result.entries" est une variable non résolue (champ).
La solution générale consiste à ajouter un @namespace
déclaration:
function niceApiCall(parameters) {
/** @namespace result.entries **/
const result = await ... // HTTP call to the API here
for (const e of result.entries) {
.. // decorate each entry in the result
}
return result;
}
l'utilisation d'un fichier JS factice avec une expression de fonction anonyme renvoyant le littéral JSON, telle qu'écrite à l'adresse http://devnet.jetbrains.com/message/5366907 , peut constituer une solution. Je peux également suggérer de créer une fausse variable qui contiendra cette valeur json et d'utiliser cette variable comme valeur d'annotation @param pour permettre à WebStorm de connaître le type réel. Comme:
var jsontext = {"some_unres_var":"val"};
/** @param {jsontext} data
function getData(data){
console.log(data.some_unres_var);
}
Voir aussi http://devnet.jetbrains.com/message/5504337#5504337
Utilisation destructrice, Luke.
function getData(data){
const {member} = data;
console.log(member);
}