ESLint で async 関数を使用した class が誤判定される件の対処法

ESLint を使い始めて困ったちょっとしたこと。

以下のように、class 構文の中で async を使った関数を定義した。

class MyClass {
  async doSomething() {
    const result = await anotherMethod();
    return result;
  }
}

このような JS ファイルを ESLint にかけてみたところ、何故か Lint エラーと判定されてしまった。

なぜかと思って調べてみると、eslintrc で定義している ecmaVersion2015 と古かったため、async を正常に解釈できなかった模様。

そこで、ecmaVersion 指定を 2017 にすると、問題が解消した。

/** .eslintrc.js */
module.exports = {
  "extends": "eslint:recommended",
  "env": {
    "node": true,
    "commonjs": true,
    "es6": true
  },
  "parserOptions": {
    // ↓ async を使用したクラスを解釈させるため 2017 を指定する
    "ecmaVersion": 2017
  },
  // 以下略
}

コレだけ〜。