asyncfunctionrequestToBFF():Promise<ServerSideEnvData>{const response: AxiosResponse<ServerSideEnvData, ErrorData>=await axios.get('/api/ping')const{ data }= response
return data
}exportclassServerSideEnvRepositoryimplementsServerSideEnvFactory{asyncping():Promise<Result<ServerSideEnvData, ErrorData>>{return ResultAsync.fromPromise<ServerSideEnvData, ErrorData>(requestToBFF(),(e)=> e as ErrorData
).map((value)=> value)}}
Discussion
neverthrowから提供されているResult型などを使って実装にチャレンジしてみました。
本記事で達成したい"try~catchを実装したくない"というコンセプトはBFF以外で達成できたのではないかと思います。
デモコードです。
デモコードの抜粋です。
レポジトリ側
フック側
コンポーネント側
簡単ですが、以上です。