北大 B1 / HUIT
slides.su8.run/231215-typesafe-api-client
フロントエンドの話です
その最たる例が REST API リクエスト
TypeScript の様々な「型の割れ窓」の中でも、 HTTP 通信や JSON 周りは特に厄介
any
安全にやろうとすると型ガードだらけで一番難しいかも
既存のサーバーがあるとか、安全性の問題とか……
→ 現実的には「実装に合わせて型定義を作る」方向で対処する
型が弱い、フロントエンドの実装が遅れる
書くのがとても大変
API 全体を俯瞰するには不向き
そもそもドキュメントを書くためのツールじゃない
src/apis/reservations/search/index.ts
export interface Methods { /** * 予約情報の検索 * * @remarks * 必要な権限: * - reservation * * @throws Error * 400: 誤ったパラメータが含まれている * * @returns 検索条件をすべて満たした予約情報の配列 * 該当するものがない場合は空の配列 */ get: { reqHeaders: AuthToken; query: Partial<ReservationQuery>; resBody: Reservation[]; }; }
どちらも API のリクエストやレスポンスの型を定義している
ただし、リファレンスには認証情報や補足情報、エラーに関する情報も含まれる
Utility Types も使えて嬉しい
TypeDoc がかなり近いが、API ドキュメントとしては不適
4xx 系列ならたぶん API 仕様内なので、型を付けてあげたい
# API クライアントの選択どうしてますか?