ExpressのEndpointに型を付ける
やりたいこと
Requestのpath params、query params、bodyに型を付けたい
実行時型検査をして欲しい
数値のみを許容する場合は、number型にしてほしい
Responseに型を付けたい
いろいろlibraryがある
io-tsを使う
これでだいたい目的は達成できたmrsekut.icon
良い
が、範囲が広い
全体的に依存することになる
薄いので自作できそうmrsekut.icon
refine.transformすると型エラーになってしまう。惜しい
これは単純にmrsekut.iconのzod知識不足かもしれない
zod-express-guard
2020/12から更新が止まっている
ちょっと触ったけど無理だったので却下
express-fp
2018年から更新が止まっている
流し読みした感じ、library使っていないので冗長な感じがする
まだちゃんと読んでないmrsekut.icon
ちなみに、Expressのdefaultでpath parameterは型が効く
code:ts
router.get('/:id/books/:bookId', (req, res) => {
const { id, bookId } = req.params; // 型が効く
const value = { value: ${id}: ${bookId} };
res.send(value);
});
ただし、全てstringになる
ここも
numberである
正数である
などを型安全にvalidationしたい