axios の レスポンスの型定義について、少し確認したのでメモ。
目的
axios のレスポンスについて TypeScript の型チェックが実行されるように型定義をする。
エラー時は、レスポンスの結果のプロパティを含まないので、誤ってプロパティに触らないようしたい。
想定レスポンス
- 正常系
1
2
3
4
5
6
7{
"success": true,
"errorMessage": "",
"payload": {
"id": 123
},
} - エラー
1
2
3
4{
"success": false,
"errorMessage": "same error message",
} - これ以外に、ネットワークのエラーもあるが、これは chache で拾うので考慮しない。
プラン 1
型定義で 内容を固めてしまうパターン。
型定義 1
1 | type User = { |
axios の利用 1
1 | try { |
プラン 2
型を引数に内容を設定するパターン。
型定義 2
1 | type PayloadUser = { |
axios の利用 2
1 | try { |
型を設定せずに axios を使うと、レスポンスは any になり推論が効かない問題を解決した。
ではでは。