guide - javascript standard code
Cómo combatir una gran cantidad de variables no resueltas que advierten en Webstorm (4)
JSDoc el objeto. Entonces sus miembros.
/**
* @param data Information about the object.
* @param data.member Information about the object''s members.
*/
function getData(data){
console.log(data.member);
}
- Probado en PyCharm. @Nicholi confirma que funciona en Webstorm.
- La sintaxis de
{{ member:type }}
sugerida por Andreas puede entrar en conflicto con las plantillas de Django. - Gracias a la answer Jonny Buchanan citando el wiki de @param .
Para documentar matrices de objetos , use corchetes []
como suggests JSDoc:
/**
* @param data
* @param data.array_member[].foo
*/
Ok, tengo una función que toma datos de ajax:
function getData(data){
console.log(data.some_unres_var);
}
Webstorm dice que some_unres_var
- es una variable no resuelta. No sé qué hacer con muchas de esas advertencias.
Veo algunas opciones:
- suprimir advertencias;
- agregue un archivo fuente json con campos (más details );
- use una sintaxis tipo arrays:
data[''some_unres_var'']
(perojslint
warn me no lo hizo); - ???
También Webstorm me ofrece crear un espacio de nombres para los "datos" (agrega una anotación como /** @namespace data.some_unres_var*/
), crea dicho campo o /** @namespace data.some_unres_var*/
nombre.
Todas las otras respuestas son incorrectas para el caso general. ¿Qué sucede si no obtiene data
como parámetro? No tienes JSDoc entonces:
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 advertirá que "result.entries" es una variable (campo) no resuelta.
La solución general es agregar una declaración @namespace
:
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;
}
Use JSDoc:
/**
* @param {{some_unres_var:string}} data
*/
function getData(data){
console.log(data.some_unres_var);
}
el uso de un archivo dummy js con expresión de función anónima que devuelve el json literal, como está escrito en details , puede ser una solución. También puedo sugerir la creación de una variable falsa que contenga este valor json, y usar esta var como un valor de la anotación @param para que WebStorm sepa cuál es el tipo real. Me gusta:
var jsontext = {"some_unres_var":"val"};
/** @param {jsontext} data
function getData(data){
console.log(data.some_unres_var);
}
Ver también http://devnet.jetbrains.com/message/5504337#5504337