ESLint v7.3.0

前 [v7.2.0](https://qiita.com/mysticatea/items/9215050e4546c1e2d486) | 次 [v7.4.0](https://qiita.com/mysticatea/items/abb2a71460b7d7d0dfba)

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">ESLint v7.3.0 has been released: <a href="https://t.co/cGcdAuYc9s">https://t.co/cGcdAuYc9s</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/1274020018733436928?ref_src=twsrc%5Etfw">June 19, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ESLint `7.3.0` がリリースされました。小さな機能追加とバグ修正が含まれています。

- Optional Chaining 構文対応は[こちら](https://github.com/eslint/eslint/pull/13416)で進行中です。もうしばらくお待ちください。
- `airbnb`共有設定の利用者にリグレッションが発生しているようです: [#13427](https://github.com/eslint/eslint/issues/13427)

質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。

> 🏢 [日本語 Issue 管理リポジトリ](https://github.com/eslint/eslint-jp)
> 👫 [日本語サポート チャット](https://discord.com/channels/688543509199716507/718026066001788958) ([招待リンク](https://discord.gg/wfTnWvE))
> 🏢 [本家リポジトリ](https://github.com/eslint/eslint)
> 👫 [本家サポート チャット](https://discord.com/channels/688543509199716507) ([招待リンク](https://eslint.org/chat))

---

[PR] ESLint は開発リソースを確保するための寄付を募っています。
応援してくださると嬉しいです。

- [ESLint の GitHub Sponsors](https://github.com/sponsors/eslint)
- [私個人の GitHub Sponsors](https://github.com/sponsors/mysticatea)

---

# ✨ 本体への機能追加

特になし

# 💡 新しいルール

## [no-promise-executor-return](https://eslint.org/docs/rules/no-promise-executor-return) 
🔖 [#12648](https://github.com/eslint/eslint/pull/12648)

`Promise`コンストラクタに渡す関数にて値を返す`return`文を書くとエラーにするルールが追加されました。値を返すのではなく`resolve()`を呼ぶ必要があります。

```js:例
/* eslint no-promise-executor-return: error */

//✘ BAD
new Promise((resolve, reject) => {
    if (someCondition) {
        return defaultResult;
    }
    getSomething((err, result) => {
        if (err) {
            reject(err);
        } else {
            resolve(result);
        }
    });
});

//✔ GOOD
new Promise((resolve, reject) => {
    if (someCondition) {
        resolve(defaultResult);
        return;
    }
    getSomething((err, result) => {
        if (err) {
            reject(err);
        } else {
            resolve(result);
        }
    });
});
```

» [Online Demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyogZXNsaW50IG5vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuOiBlcnJvciAqL1xuXG4vL+KcmCBCQURcbm5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoc29tZUNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFJlc3VsdDtcbiAgICB9XG4gICAgZ2V0U29tZXRoaW5nKChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5cbi8v4pyUIEdPT0Rcbm5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoc29tZUNvbmRpdGlvbikge1xuICAgICAgICByZXNvbHZlKGRlZmF1bHRSZXN1bHQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGdldFNvbWV0aGluZygoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pOyIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6MTEsInNvdXJjZVR5cGUiOiJtb2R1bGUiLCJlY21hRmVhdHVyZXMiOnt9fSwicnVsZXMiOnt9LCJlbnYiOnsiZXMyMDIwIjp0cnVlfX19)

## [no-unreachable-loop](https://eslint.org/docs/rules/no-unreachable-loop) 
🔖 [#12660](https://github.com/eslint/eslint/pull/12660)

ループしないループ構文をエラーにするルールが追加されました。

```js:例
/* eslint no-unreachable-loop: error */

//✘ BAD
for (let i = 0; i < arr.length; i++) {
    if (arr[i].name === myName) {
        doSomething(arr[i]);
        // break was supposed to be here
    }
    break;
}
```

» [Online Demo](https://eslint.org/demo#eyJ0ZXh0IjoiLyogZXNsaW50IG5vLXVucmVhY2hhYmxlLWxvb3A6IGVycm9yICovXG5cbi8v4pyYIEJBRFxuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyW2ldLm5hbWUgPT09IG15TmFtZSkge1xuICAgICAgICBkb1NvbWV0aGluZyhhcnJbaV0pO1xuICAgICAgICAvLyBicmVhayB3YXMgc3VwcG9zZWQgdG8gYmUgaGVyZVxuICAgIH1cbiAgICBicmVhaztcbn1cbiIsIm9wdGlvbnMiOnsicGFyc2VyT3B0aW9ucyI6eyJlY21hVmVyc2lvbiI6MTEsInNvdXJjZVR5cGUiOiJtb2R1bGUiLCJlY21hRmVhdHVyZXMiOnt9fSwicnVsZXMiOnt9LCJlbnYiOnsiZXMyMDIwIjp0cnVlfX19)

# 🔧 オプションが追加されたルール

特になし