web-dev-qa-db-ja.com

Webstormで大量の未解決の変数の警告と戦う方法は?

サーバーからデータを取得する関数があります:

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

Webstormによれば、someVar-は未解決の変数です。そのような警告は何を取り除くことができますか?

いくつかのオプションがあります:

  • Ide設定で警告を抑制します。
  • フィールドを持つJSONソースファイルを追加します( details );
  • 配列のような構文を使用します:data['some_unres_var'];

また、「データ」の名前空間を作成する(/** @namespace data.some_unres_var*/のような注釈を追加する)、そのようなフィールドを作成する、または名前を変更することを提供するWebstorm。

102
Sergei Panfilov

JSDocを使用します。

/**
 * @param {{some_unres_var:string}} data
 */
function getData(data){
    console.log(data.some_unres_var);
}

JSDocオブジェクト。それからそのメンバー。

/**
 * @param data          Information about the object.
 * @param data.member   Information about the object's members.
 */
function getData(data){
    console.log(data.member);
}
  • @propertyローカル変数(非パラメーター)
  • PyCharmでテスト済み。 @Nicholiは、Webstormで動作することを確認しています。
  • Andreasが提案した{{ member:type }}構文は、Djangoテンプレートと競合する可能性があります。
  • ジョニー・ブキャナンの answer@ param wiki を引用してくれてありがとう。

オブジェクトの配列を文書化するには、JSDocとして[]ブラケットを使用します suggests

/**
 * @param data
 * @param data.array_member[].foo
 */
42
Bob Stein

他のすべての回答は、一般的なケースでは正しくありません。パラメーターとしてdataを取得しないとどうなりますか?その場合、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は、「result.entries」が未解決の変数(フィールド)であることを警告します。

一般的な解決策は、@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;
}
15
Dan Dascalescu

http://devnet.jetbrains.com/message/5366907 に記述されているように、jsonリテラルを返す匿名関数式でダミーのjsファイルを使用することは解決策です。また、このjson値を保持する偽の変数を作成し、この変数を@paramアノテーションの値として使用して、WebStormに実際の型を知らせることもできます。好む:

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

こちらもご覧ください http://devnet.jetbrains.com/message/5504337#5504337

6
lena

破壊的な使用、ルーク。

function getData(data){
    const {member} = data;
    console.log(member);
}
2
lazy.lizard