5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【typescript・eslint】awaitを忘れないようにしたい

Posted at

初書:2022/06/18

前書き

Promiseを使う際に、順番通りに実行する必要があるコードだと、awaitを使って処理結果を待つことがある。
ただ、await自体は必須ワードではないので、つい書き忘れてしまい、その結果意図しないコードが出来ることがある。
と言うことで、エディター側で書き忘れていたらエラーが出るようにしたいと言うのが今回のお話。

前提

typescriptとeslintを使っていること。

コード例

async function outputDataToConsole() {
  const data = getData(); // promise<object>
  console.log(data);
}

とても適当に用意したコード。
この中のgetDataがPromiseで例えばデータベースに接続して取得するようなコードだとしよう。
このコードを実行した場合、その下のconsole.logで出力されるのはpromise自体で、
データが出力されない。
これを防ぐために、getDataのところでエラーが出るようにしたい。

対策

tslintにno-floating-promisesと言うものがあり、
これを使うことでawaitのところでエラーが出るようになる。

.eslintrc.json
  "overrides": [
    {
      "files": ["**/*.ts"],
      "rules": {
        "@typescript-eslint/no-floating-promises": "error"
      },
      "parserOptions": {
        "project": ["./tsconfig.json"]
      }
    }
  ]

typescriptのeslintのため、overridesのところに記述している。
これで、awaitを書き忘れるとエラーが出るようになった。

参考サイト

「意図的なawait書き忘れ問題」との戦い方を考える ~JavaScriptと非同期処理の話~ - Qiita

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?