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. Typegen 只需要 Node.js 来运行(不需要 Java、Python 等),可以在任何环境中运行。
  5. 支持从文件以及本地和远程服务器获取 OpenAPI 模式。

差异

与 swagger-codegen 比较

openapi-typescript 专门为 swagger-codegen 的轻量、易于使用的替代方案而创建,它不需要 Java 运行时或运行 OpenAPI 服务器。它也不生成庞大的客户端端代码。实际上,openapi-typescript 生成的所有代码都是无运行时的静态类型,以实现最大性能和最小的客户端体积。

与 openapi-typescript-codegen 比较

这两个项目无关。openapi-typescript-codegen 是原始 swagger-codegen 的 Node.js 替代方案,但实际上是一样的。openapi-typescript 具有与 openapi-typescript-codegen 相同的优势,即无运行时,而 openapi-typescript-codegen 可以生成相当庞大的捆绑包,取决于模式的复杂性,可以达到 250 kB 或更多。

与 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

dnalborczyk

dnalborczyk

FabioWanner

FabioWanner

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

ottomated

ottomated

Artem Shuvaev

Artem Shuvaev

ajaishankar

ajaishankar

Dominik Dosoudil

Dominik Dosoudil

kgtkr

kgtkr

berzi

berzi

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

shoffmeister

shoffmeister

liangsky

liangsky

Don Denton

Don Denton

Yad Smood

Yad Smood

barak

barak

Lukáš Horák

Lukáš Horák

pvanagtmaal

pvanagtmaal

Andrea Carraro

Andrea Carraro

psychedelicious

psychedelicious

Tanguy Krotoff

Tanguy Krotoff

Pim Veldhuisen

Pim Veldhuisen

Aleksandr Vishniakov

Aleksandr Vishniakov

SchabaJo

SchabaJo

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 Peng

Hongkun Peng

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

基于 MIT 许可发布