自定义链式方法
最后更新: 2026-06-18
当你想给已有 builder 增加方法时,看本页:
这和自定义 DSL 类型、s.xxx() factory 都不是一回事。
添加运行时 builder 方法
registerExtension() 可以注册 DSL 字面量和 namespace factory,但不会自动给 DslBuilder.prototype 增加方法。扩展 setup 里需要提供运行时方法:
方法应保持幂等,避免热重载、重复测试 setup 或插件重复安装时反复覆盖。
添加 TypeScript builder 提示
这样 s('string!').tenantId() 就能获得 builder 方法提示。
添加直接 String 链式提示
只有项目明确使用直接 String 链式源码时,才增加这部分:
直接 String 链式源码仍需要以下任一路径:
- 通过
schema-dsl/transform或schema-dsl/esbuild做编译期转换; - 通过
schema-dsl/register-string显式安装 String 扩展; - 在明确接受 v1 String 扩展行为时使用兼容/root 入口。
为自定义方法配置 transform
转换直接 String 链式源码时,需要追加方法名:
如果链式调用从自定义 DSL 字面量开始,还要允许这个字面量:
推荐包结构
可复用扩展建议把运行时实现和类型声明放在一起:
实现文件负责安装 builder 方法。声明文件负责增强 schema-dsl/pure,只有需要直接 String 链式源码时才增强 schema-dsl/string-types。transform 配置文件导出 additionalMethods 和 additionalTypes 供构建工具使用。
对应示例文件
示例入口: custom-chain-methods.ts 说明: 安装自定义 builder 方法,验证 builder 写法,并校验直接 String 链式源码的 transform 配置。