openapi-generator と restful-react で生成される TypeScript のモデルは日付系の型が異なる場合がある

最近、昼の仕事では OpenAPI を軸にした開発をしていて、client 側は React/TypeScript で書くことがあります。

当初は openapi-generator で生成した API Client を利用していたのですが、 restful-react も OpenAPI から client を生成できると知り試験的に導入し始めています。

OpenAPI.Tools

同時に検討したのは以下ですが、現状 generator が欲しかったので一旦外しました。(API 見ると便利そうに見える)

Rest Hooks · Delightful data fetching

日付系の OpenAPI 定義の例

OpenAPI-Specification/3.0.1.md at master · OAI/OpenAPI-Specification · GitHub

以下のような感じですね。

"createdAt": {
  "type": "string",
  "format": "date-time"
}

openapi-generator と restful-react での違い

restful-react の場合

restful-react/import-open-api.ts at master · contiamo/restful-react · GitHub

上記の通り string として生成されます。

openapi-generator の場合

openapi-generator は TypeScript への生成でも複数の生成方法があります

まとめ

調べ始めた当初は restful-reactopenapi-generator で違いがあるのかぐらいにしか思ってなかったですが、調べてみると openapi-generator としても生成対象によって異なっていることが分かりました。

ちなみに openapi-generator が生成するコードは API から受け取った文字列を new Date(createdAtStr) のように Date に変換するだけのコードが生成されます。