Jak walczyć z mnóstwem nierozwiązanych zmiennych w WebStorm?

Mam funkcję, która pobiera dane z serwera:

function getData(data){
    console.log(data.someVar);
}

WebStorm mówi, że someVar jest zmienną nierozwiązaną. Jak mogę pozbyć się takich ostrzeżeń?

Widzę kilka opcji:

  • wyłączanie ostrzeżeń w Ustawieniach IDE;
  • Dodaj plik źródłowy JSON z polami ( szczegóły);
  • użyj składni podobnej do tablicy: data['some_unres_var'];

Ponadto WebStorm oferuje mi stworzenie przestrzeni nazw dla "danych" (dodaj adnotację jak /** @namespace data.some_unres_var*/), Utwórz takie pole, lub zmienić jego nazwę.

Author: user4157124, 2013-12-30

6 answers

Użyj JSDoc:

/**
 * @param {{some_unres_var:string}} data
 */
function getData(data){
    console.log(data.some_unres_var);
}
 112
Author: Andreas Berheim Brudin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-16 12:13:14

Jsdoc obiekt. Potem jego członkowie.

/**
 * @param data          Information about the object.
 * @param data.member   Information about the object's members.
 */
function getData(data){
    console.log(data.member);
}
  • @property dla zmiennych lokalnych (bez parametrów).
  • testowane w PyCharm. @Nicholi potwierdza, że działa w WebStorm.
  • składnia {{ member:type }} zasugerowana przez Andreasa może być w konflikcie z szablonami Django.
  • dzięki odpowiedzi Jonny ' ego Buchanana cytując @ param wiki.

Aby udokumentować tablice obiektów , użyj [] nawiasów jako jsdoc sugeruje :

/**
 * @param data
 * @param data.array_member[].foo
 */
 50
Author: Bob Stein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-06 00:03:52

Wszystkie inne odpowiedzi są nieprawidłowe W ogólnym przypadku. Co jeśli nie otrzymasz data jako parametru? Nie masz wtedy JSDoc:

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 ostrzega, że " wynik.entries " jest zmienną nierozwiązaną (polem).

Ogólnym rozwiązaniem jest dodanie @namespace deklaracji:

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;
}
 22
Author: Dan Dascalescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-21 05:29:43

Używanie atrapy pliku js z anonimowym wyrażeniem funkcji zwracającym literał json, tak jak napisano w http://devnet.jetbrains.com/message/5366907 , może być rozwiązaniem. Mogę również zasugerować stworzenie fałszywej zmiennej, która będzie zawierać tę wartość json i użyć tej zmiennej jako wartości adnotacji @ param, aby WebStorm wiedział, jaki jest rzeczywisty typ. Like:

var jsontext = {"some_unres_var":"val"};
/** @param {jsontext} data */
function getData(data){
    console.log(data.some_unres_var);
}

Zobacz też http://devnet.jetbrains.com/message/5504337#5504337

 6
Author: lena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-16 20:54:00

Użycie destrukcyjne, Luke.

function getData(data){
    const {member} = data;
    console.log(member);
}
 4
Author: lazy.lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-14 15:13:12

Aby usunąć ostrzeżenia W WebStorm IDE, możesz po prostu odznaczyć opcje inspekcji dla:

  • nierozwiązana funkcja Javascript
  • Unsolved JavaScript variable

Ps . spowoduje to usunięcie ostrzeżeń na IDE, ale nie sądzę, że jest to najlepszy pomysł, ponieważ stracimy jeden z najlepszych narzędzi w IDE takim jak Webstorm, który może pogorszyć jakość naszego kodu.

Mimo to, jeśli chcesz śledzić w menu: plik > Ustawienia > edytor > inspekcje możemy wyłączyć ostrzeżenia Javascript

Jak na poniższym zdjęciu:

odznacz opcje

 1
Author: valdeci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-05 17:07:03