LoginSignup
3
0

More than 5 years have passed since last update.

TypeScriptのコンパイル時のエラー対処法:「Expression has type `void`. Put it on its own line as a statement.」

Posted at

エラー文

Expression has type `void`. Put it on its own line as a statement.

解決法

ここにもある通り、宣言されたものは基本的に何か値を返すことが、void型以外は必須。

つまり、自分の例では以下の通り。

こちらでは、handleError()が何も返さないが、

before.ts
const render = (req, res) => {

  const handleError = (err) => {
    if (err.url) {
      res.redirect(err.url);
    } else if (err.code === 404) {
      res.status(404).send('404 | Page Not Found');
    } else {
      res.status(500).send('500 | Internal Server Error');
    }
  }

  const context = { url: req.url }

  renderer.renderToString(context, (err, html) => {
    if (err) {
      return handleError(err);
    }
    res.end(html);
  })
}

以下のように、handleError()returnを与える必要がある。

after.ts
const render = (req, res) => {

  const handleError = (err) => {
    if (err.url) {
      return res.redirect(err.url);
    } else if (err.code === 404) {
      return res.status(404).send('404 | Page Not Found');
    } else {
      return res.status(500).send('500 | Internal Server Error');
    }
  }

  const context = { url: req.url }

  renderer.renderToString(context, (err, html) => {
    if (err) {
      return handleError(err);
    }
    res.end(html);
  })
}
3
0
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
3
0