エラー文
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);
})
}