ExpressのEndpointに型を付ける
やりたいこと
Requestのpath params、query params、bodyに型を付けたい
実行時型検査をして欲しい
数値のみを許容する場合は、 number
型にしてほしい
Responseに型を付けたい
いろいろlibraryがある
io-tsを使う
これでだいたい目的は達成できた

良い
が、範囲が広い
全体的に依存することになる
薄いので自作できそう

refine.transformすると型エラーになってしまう。惜しい
これは単純に

のzod知識不足かもしれない
zod-express-guard
2020/12から更新が止まっている
ちょっと触ったけど無理だったので却下
express-fp
2018年から更新が止まっている
流し読みした感じ、library使っていないので冗長な感じがする
まだちゃんと読んでない

ちなみに、Expressのdefaultでpath parameterは型が効く
tsrouter.get('/:id/books/:bookId', (req, res) => {
const { id, bookId } = req.params; // 型が効く
const value = { value: `${id}: ${bookId}` };
res.send(value);
});
ただし、全て string
になる
ここも
numberである
正数である
などを型安全にvalidationしたい