Skip to content

openapi-typescriptについて

利用者

  • Bigcommerce: BigCommerce API 用の Node SDK
  • Budibase: 内部ツール、ワークフロー、および管理ダッシュボードを作成するためのローコードプラットフォーム
  • Fedora fmn: Fedora メッセージインフラストラクチャのツールと API
  • Fingerprint: 大規模なアプリケーション向けのデバイスフィンガープリンティング
  • Google Firebase CLI: Google Firebase プラットフォーム用の公式 CLI
  • GitHub Octokit: GitHub API の公式 SDK
  • Lotus: オープンソースの価格設定およびパッケージングインフラストラクチャ
  • Jitsu: モダンでオープンソースのデータ収集/データパイプライン
  • Medusa: デジタルコマースの構築ブロック
  • Netlify: モダンな開発プラットフォーム
  • Nuxt: 直感的な Vue フレームワーク
  • Relevance AI: AI チェーンの構築と展開
  • Revolt: オープンソースのユーザー優先チャットプラットフォーム
  • Spacebar: 無料でオープンソースの自ホスト可能な Discord 互換のチャット/音声/ビデオプラットフォーム
  • Supabase: オープンソースの Firebase 代替
  • Twitter API: Twitter API の公式 SDK

プロジェクトの目標

  1. 任意の有効な OpenAPI スキーマを TypeScript 型に変換できるようにすること。どんなに複雑なスキーマでも対応可能です。
  2. 生成される型は静的に解析可能で、実行時の依存関係がない(ただし、enums のような例外はあります)。
  3. 生成された型は、元のスキーマにできるだけ一致し、元の大文字形式などを保持します。
  4. 型の生成 は Node.js だけで実行可能であり、(Java、Python などは不要)どんな環境でも実行できます。
  5. ファイルからの OpenAPI スキーマのフェッチや、ローカルおよびリモートサーバーからのフェッチをサポートします。

比較

vs. swagger-codegen

openapi-typescript は、swagger-codegen の軽量で使いやすい代替手段として作成されており、Java ランタイムや OpenAPI サーバーを実行する必要はありません。また、大規模なクライアントサイドコードも生成しません。実際、openapi-typescript が生成するすべてのコードは、実行時の依存関係がない静的型 であり、最大のパフォーマンスと最小のクライアント負荷を実現します。

vs. openapi-typescript-codegen

openapi-typescript-codegen は、元の swagger-codegen の Node.js 代替手段ですが、実際には同じものです。openapi-typescript は、openapi-typescript-codegen と同様に、実行時の依存関係がない という利点を持っていますが、openapi-typescript-codegen は、スキーマの複雑さに応じて 250 kB 以上になるかなり大きなバンドルを生成する可能性があります。

vs. tRPC

tRPC は、強い設計方針を持ったサーバーとクライアントの両方で型の安全性を提供するフレームワークです。これは、サーバーとクライアントの両方が tRPC で記述されていることを要求します(つまり、バックエンドが Node.js を使用しています)。

このユースケースに合っているならば、素晴らしい体験ができるでしょう!しかし、他のすべての場合において、openapi-typescript(および openapi-fetch)は、あらゆる技術選択に適応できる、より柔軟で低レベルなソリューションです(コストなしで段階的に導入することさえできます)。

貢献者

これらの素晴らしい貢献者がいなければ、このライブラリは存在しなかったでしょう:

Drew Powers

Drew Powers

Przemek Smyrdek

Przemek Smyrdek

Dan Enman

Dan Enman

Atle Frenvik Sveen

Atle Frenvik Sveen

Tim de Wolf

Tim de Wolf

Tom Barton

Tom Barton

Sven Nicolai Viig

Sven Nicolai Viig

Sorin Davidoi

Sorin Davidoi

Nathan Schneirov

Nathan Schneirov

Lucien Bénié

Lucien Bénié

Boris K

Boris K

Anton Kastritskii

Anton Kastritskii

Tim Shelburne

Tim Shelburne

Michał Miszczyszyn

Michał Miszczyszyn

Sam K Hall

Sam K Hall

Matt Jeanes

Matt Jeanes

Kristofer Giltvedt Selbekk

Kristofer Giltvedt Selbekk

Elliana May

Elliana May

Henrik Hall

Henrik Hall

Gregor Martynus

Gregor Martynus

Sam Mesterton-Gibbons

Sam Mesterton-Gibbons

Rendall

Rendall

Robert Massaioli

Robert Massaioli

Jan Kuča

Jan Kuča

Thomas Valadez

Thomas Valadez

Asitha de Silva

Asitha de Silva

Misha

Misha

Alex Batalov

Alex Batalov

Federico Bevione

Federico Bevione

Daisuke Yamamoto

Daisuke Yamamoto

Ash Smith

Ash Smith

Micah Halter

Micah Halter

chrg1001

chrg1001

Dakshraj Sharma

Dakshraj Sharma

Shaosu Liu

Shaosu Liu

Vytenis

Vytenis

Eric Zorn

Eric Zorn

Max Belsky

Max Belsky

Peter Bech

Peter Bech

Rusty Conover

Rusty Conover

Dave Carlson

Dave Carlson

Artem Shuvaev

Artem Shuvaev

Dominik Dosoudil

Dominik Dosoudil

kgtkr

kgtkr

Philip Trauner

Philip Trauner

Pavel Yermolin

Pavel Yermolin

Duncan Beevers

Duncan Beevers

Timofei Kukushkin

Timofei Kukushkin

Dmitry Semigradsky

Dmitry Semigradsky

Jeremy Liberman

Jeremy Liberman

Axel Hernández Ferrera

Axel Hernández Ferrera

Loïc Fürhoff

Loïc Fürhoff

Bartosz Szczeciński

Bartosz Szczeciński

Marco Salomone

Marco Salomone

Yacine Hmito

Yacine Hmito

Sajad Torkamani

Sajad Torkamani

Marius van den Beek

Marius van den Beek

Steven Grimm

Steven Grimm

Erik Hughes

Erik Hughes

Matthieu Monsch

Matthieu Monsch

Mitchell Merry

Mitchell Merry

François Risoud

François Risoud

liangsky

liangsky

Don Denton

Don Denton

Yad Smood

Yad Smood

barak

barak

Lukáš Horák

Lukáš Horák

Andrea Carraro

Andrea Carraro

psychedelicious

psychedelicious

Tanguy Krotoff

Tanguy Krotoff

Pim Veldhuisen

Pim Veldhuisen

Aleksandr Vishniakov

Aleksandr Vishniakov

Ahsan Fazal

Ahsan Fazal

Eugene Dzhumak

Eugene Dzhumak

Mohammed Gadi

Mohammed Gadi

Adam K

Adam K

Christoph Fricke

Christoph Fricke

Jorrin

Jorrin

Nick Williams

Nick Williams

hrsh7th

hrsh7th

David Leger

David Leger

Hongkun

Hongkun

Matthias Zronek

Matthias Zronek

Łukasz Wiśniewski

Łukasz Wiśniewski

Jean-Rémi Delteil

Jean-Rémi Delteil

Tzvi Melamed

Tzvi Melamed

ehrenschwan

ehrenschwan

Niccolo Zapponi

Niccolo Zapponi

Marvin Luchs

Marvin Luchs

Neil MacMunn

Neil MacMunn