Jak walczyć z dużą ilością nierozwiązanych zmiennych ostrzeżenie w Webstorm
Ok, mam funkcję, która pobiera dane z ajax:
function getData(data){
console.log(data.some_unres_var);
}
Webstorm mówi, że some_unres_var
- jest zmienną nierozwiązaną.
Nie wiem, co zrobić z wieloma takimi ostrzeżeniami.
Widzę kilka opcji:
- tłumić Ostrzeżenia;
- Dodaj plik źródłowy json z polami (więcej szczegóły);
- użyj składni podobnej do tablic:
data['some_unres_var']
(alejslint
ostrzegaj mnie, żeby tego nie zrobił); - ???
Również Webstorm oferuje mi stworzenie przestrzeni nazw dla "data" (dodaj adnotację jak /** @namespace data.some_unres_var*/
), Utwórz takie pole lub zmień jego nazwę.
4 answers
Użyj JSDoc:
/**
* @param {{some_unres_var:string}} data
*/
function getData(data){
console.log(data.some_unres_var);
}
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
*/
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
2018-09-18 15:03:40
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;
}
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
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
2013-12-30 10:10:40