主要观点:作者近期在写新 Ruby gem 时,因支持类型检查,深入研究了当前技术,以在自己项目中实现对 gem API 的类型检查。介绍了 RBS 文件(类似 Ruby 但有细微差别且包含类型)、相关的 CLI 和原型设计、手动维护 RBS 文件的不便(每次修改需在.rb 和.rbs 中重复)、使用 Steep 进行类型检查(虽效果好但对 DSL 支持少,通过魔法注释实现类型断言)、RBS 集合(用于获取第三方代码的类型签名)、IDE 工具支持(VSCode 插件仅提供错误诊断)以及对 RBS 用户的观察(感觉在现有代码库中安装困难,虽新但已四年仍不够成熟)。
关键信息:
- Sorbet 在 Stripe 使用多年,虽有不便但能减少 bug。
- Matz 宣布 Sorbet 类型方法错误并建立 RBS 文件。
- RBS 文件支持多种类型范式。
rbs prototype
可生成现有.rb 文件的骨架.rbs 文件。- 手动维护 RBS 文件增加工作量和组织负担。
- Steep 是 RBS 倡议支持的替代 Sorbet CLI 的工具。
- RBS 集合可安装第三方 gem 的 RBS 文件。
- Steep VSCode 插件仅提供错误诊断。
重要细节:
- 示例 RBS 文件展示了模块、接口、类等的类型定义。
bundle exec steep check
运行类型检查。- RBS 集合通过
rbs collection install
安装。 - 作者对 RBS 未来发展持保留态度,担心其重蹈 Ractors 的覆辙。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。