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

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

公众号新闻

作者 | 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资讯

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

戳这里提交新闻线索和高质量文章给我们。
相关阅读
精选SDE岗位丨Microsoft、PayPal、Spotify等公司持续热招!探索深度学习的薄弱环节:量子启发的神经网络脆弱性分析 | NSR湖南大学聂舟团队Angew |工程化Anti-CRISPR蛋白创建CRISPR-Cas蛋白开关用于激活型基因编辑和病毒蛋白酶检测全英语言班即将开启,快来看看这些便宜的语言班房源吧,寻找一个语言班搭子!英国语言班即将开启,短期语言班住哪里?快来看看语言班同学都住哪!超越 GPT-4V 和 Gemini Pro!HyperGAI 发布最新多模态大模型 HPT,已开源英国语言班开启,快来看看12周语言、8周语言班的同学住哪里!Spring 全家桶版本更新:Spring Boot、Spring Security 和 Spring Modulith美股基本面 - 2024_03_20 * 晨报 * 腾讯第四季度本土游戏收入270亿元 国际游戏收入139亿元。腾讯第四季度社可怕!12种受污染最严重果蔬名单公布,约95%检出农药残留Spring Boot 3.2 和 Spring Framework 6.1添加对 Java 21、虚拟线程和 CRaC 的支持Piece by Piece, an Ancient Chinese Craft Is Shaping Future ToysECMAScript 2024新特性除了衬衫,夏天还有什么穿着不热、好搭配的实用外套?OpenAI CEO首谈新AI创企:受ChatGPT看病启发JavaScript 代码千行,不如学 TypeScript 类型一日 | 极客时间硅谷四月新闻:Amino合伙人与YC CEO、TechCrunch主编在YC|天使投资的Guesty完成九亿美金估值融资金庸百年,百年金庸JavaScript 开发的挑战与未来:简化与创新的平衡【资讯】度假租车的实用建议,这些陷阱需避免这类资产被疯抢!国家发的“3分钟卖光”,有人早上5点就开始排队!广东发的“上线1分钟,5亿元秒光”熵泱——第四十八章受TikTok事件影响 Temu寻求美国以外增长8个你应该掌握的实用 Java Streams APID-二聚体检测:临床应用的实用建议Transformer解码真实场景!Meta推出70M参数SceneScript模型妈妈的野心美国档案--李小缘。1921年uboot启动流程源码分析最新 Amex Offers 汇总【Secrets & Impression by Secrets 度假村 $750返$200】【戒瘾】Science:成瘾机制获突破!启发:电子游戏上瘾、看视频上瘾,快来借鉴。。。常见中国签证类型,应该如何选择?Common Chinese Visa Types: How to Choose?用GPT-4纠错GPT-4!OpenAI推出CriticGPT模型;谷歌Gemma 2发布,与第一代相比性能更高丨AIGC日报文末送书!大语言模型应用指南:以ChatGPT为起点,从入门到精通的实践教程TypeScript 5.5正式发布:更快、更智能、更强大
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。