Bendi新闻
>
TypeSpec:一种受TypeScript启发的实用的API定义语言

TypeSpec:一种受TypeScript启发的实用的API定义语言

1月前

作者 | Eran Stiller
译者 | 平川
策划 | Tina

最近,微软工程师正式发布了 TypeSpec。这是一种新语言,专门为以 API 为中心的开发量身定制,可以解决现代 API 设计的复杂需求。TypeSpec 是一种开源、可扩展的语言,其灵感来自 TypeScript 和 C#。它支持各种协议和序列化格式,使开发人员使用一个工具就可以管理多种 API 规范。

TypeSpec 使用支持的协议或序列化格式描述 API。它采用了简洁的语法,并提供了 Visual Studio 和 VS Code 编辑器工具。使用 TypeSpec,开发人员可以将常见的数据类型、API 模式和 API 指南封装到高层可重用组件中,实现跨团队或生态系统共享。

示例:TypeSpec 规范及生成的 OpenAPI schema(来源

定义好规范之后,开发人员就可以将其编译为符合标准的 OpenAPI、JSON Schema、Protobuf 或三者同时。

该语言具有很高的可扩展性,支持自定义修饰词表和类型模板,使开发人员可以根据特定的业务或应用程序逻辑域定制 API。TypeSpec 还允许通过 NPM 创建和分发包,从而促进生态系统的发展。这些包既可以在组织内部使用,也可以在更广泛的开发社区里共享。

在微软内部,TypeSpec 得到了积极应用,尤其是 Azure 服务和 Microsoft Graph 团队。通过在开发过程中使用 TypeSpec,微软工程师提高了在其他实际场景中使用 TypeSpec 进行 API 开发的可靠性和效率。

Brian Terlson 是微软 Azure 开发体验首席软件架构师,也是 TypeSpec 和 Azure JavaScript SDK 的架构师。自 2019 年以来,他就一直在从事与 TypeSpec 相关的工作。Brian 说:“由于我们一直在对 TypeSpec 进行迭代和改进,所以我们认为现在是时候从更广泛的 API 开发社区获得更多的反馈了。”他指出,TypeSpec 团队”渴望得到更多的反馈,从而更好地理解 1.0 版本应该优先提供什么。”

InfoQ 采访了 Terlson,谈了 TypeSpec、它的价值主张以及它与其他类型定义语言的区别。

InfoQ:市面上已经有多种接口描述语言(IDL),为什么还要新发明一种语言呢?TypeSpec 的主要创新点是什么?

Brian Terlson:TypeSpec 源于我们在 Azure 中大规模交付服务的经验。在这种情况下,服务和团队很多,我们需要一个解决方案来帮助开发人员快速创建一致的高质量 API。

TypeSpec 有几个方面是独一无二的。首先,我们将重点放在了支持 API 抽象上,为的是 API 设计人员可以构建可重用 API 组件库。在规模很大时,这一点很重要。在 Azure,我们广泛依赖于这一点,降低开发成本、审查成本和服务规范的复杂性,同时提高 API 质量和一致性。

其次,TypeSpec 是协议无关的。它支持随库添加的特定协议或序列化格式。这使得 TypeSpec 可以作为不止一个协议的单一事实来源。开发人员和应用程序越来越多地使用多语言,在涉及跨多种语言和协议的实现时,这一点尤其有价值。

最后是开发人员熟悉度:TypeSpec 的灵感来自现有的语言,主要是 TypeScript,也有 C#,所以许多开发人员都会觉得我们的语言是他们所熟悉的。此外,在扩展性和打包方面,我们使用了 JavaScript,它带来了强大的功能,而且不需要开发人员学习新东西。

InfoQ:TypeSpec 为软件架构师提供的基本价值主张是什么?

Terlson:TypeSpec 的目标是降低构建和使用 API 的成本,使它们更实用。优先构建 API,可以带来许多可扩展性和 API 质量方面的优势。

API 优先的方法支持跨若干应用程序栈的生成代码,并将流程中的审查和治理职责前移,提高了可扩展性,降低了变更成本。

此外,它还能够将常见的 API 外形抽象为可重用的组件,使开发人员可以做最简单的事,使架构师可以做正确的事,两者实现了有效的统一。在这两种情况下都应该使用组件。

TypeSpec 还致力于实现与 OpenAPI 等 API 描述格式的互操作。因此,在现有的工具链上就可以获得这些好处。

InfoQ:TypeSpec 未来几年的愿景是什么?

Terlson: 现在,我们正在努力构建 1.0 的稳定版本,包括将 Azure SDK 的代码生成技术转移到 TypeSpec 项目中,希望社区在此之前继续为我们提供反馈。

对于这项技术,我们感到非常自豪。人们开始使用它生成 API 客户端和服务器,我们为此感到兴奋。

我们将继续构建这门语言,比如使其能够定义特定的值,并使用这些值来定义诸如 API 示例之类的东西。我们还添加了新的库特性,比如定义流和事件 API,以支持服务器发送事件和流式 JSONL 等。

长远来看,在很大程度上,我们的工作取决于我们从社区获得的反馈。我们希望在语言中添加更多的功能用于描述新的 API 类型,扩展标准库从而支持新的协议、序列化格式和标准数据形状,并进行代码生成方面的创新,使它可以在软件生态系统的更多地方使用。

欢迎访问我们的 GitHub(https://github.com/microsoft/typespec),告诉我们你的想法!

原文链接:

https://www.infoq.com/news/2024/05/typespec/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

SQL 50 周年了,但 SQL 之父已经“投靠”NoSQL 了

演示文生图时出现sleep代码,华为回应造假嫌疑;微软将中国AI团队集体打包到美国;百度ECharts创始人“下海”养鱼|Q资讯

微信扫码关注该文公众号作者

来源:InfoQ

相关新闻

李飞飞:更大的语言模型也不会带来感知能力两次击败那英!精通英、法、阿3国语言:天赋异禀的00后计算机学霸,是怎样“炼”成的?ACL 2024 | 多目标直接偏好优化MODPO:大语言模型的多目标对齐今日arXiv最热NLP大模型论文:清华大学:大语言模型的常见词僻意理解能力竟不如中学生超越思维链:大型语言模型的X链范式综述人物 | 所罗门诺夫:大语言模型的先知MIT最新研究:什么样的语言最有可能激活大脑的语言处理中心?FuseLLM:大语言模型的知识融合!检索增强的大型语言模型:EMNLP 2023 检索相关论文导览当推荐系统遇见大语言模型:通往未来的三条路径母亲节整个活儿:用各个国家的语言说“妈妈”,你能听懂几个?超越Llama-2!微软新作Phi-3:手机上能跑的语言模型这就是OpenAI神秘的Q*?斯坦福:语言模型就是Q函数让玩家全程掌控游戏:自然语言指令驱动的游戏引擎到来了为什么 Rust 成为近年最受开发者推崇的语言?| 极客时间揭秘Sora:用大语言模型的方法理解视频,实现了对物理世界的“涌现”今日arXiv最热大模型论文:大模型都能怎么用?中南大学最新综述:大模型时代的自然语言处理​ACL 2024 | 新一代艺术媒介:探索基于大语言模型的互动戏剧在 IDE 中实现自然语言搜索代码:RAG 策略的设计与落地奥特曼谈AI的机遇、挑战与人类自我反思:中国将拥有独特的大语言模型大语言模型的创意"魔法":召唤隐藏的联想思维五光十色的多模态大模型:浅探视觉-语言大模型的关键模块设计极长序列、极快速度:面向新一代高效大语言模型的LASP序列并行HaluEval 2.0:大语言模型事实性幻象的实验性分析
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。