style standard guide customize coding code javascript coding-style webstorm

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''] (pero jslint 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