如何扩展TypeScript中递归的JSONSchema4接口以添加自定义属性
可以实现,通过TypeScript的**模块扩展(Module Augmentation)**特性即可给第三方类型定义扩展自定义字段,操作方法如下:
- 在你的项目中新建一个全局声明文件,比如命名为
json-schema-augment.d.ts - 写入以下声明代码:
// 扩展@types/json-schema中的JSONSchema4类型 declare module 'json-schema' { interface JSONSchema4 { // 新增你需要的自定义字段 instanceof?: string } } // 如果你不需要引入模块就能全局使用JSONSchema4类型,也可以补充全局声明 declare global { interface JSONSchema4 { instanceof?: string } }
效果说明
原JSONSchema4的properties属性的子项本身就是JSONSchema4类型,接口合并完成后,不管是顶层的schema还是嵌套在properties里的子schema,都支持使用instanceof字段,不会触发类型报错。
使用示例:
const mySchema: JSONSchema4 = { instanceof: 'Object', properties: { createTime: { instanceof: 'Date' // 此处类型校验正常通过 } } }
注意事项
确保你的tsconfig.json的include配置项包含了你新建的.d.ts声明文件,否则TypeScript不会加载该扩展规则。
内容的提问来源于stack exchange,提问作者Leo Jiang
相关产品推荐
相关产品推荐

