如何递归提取两个TypeScript类型中的不匹配键?
递归检测翻译JSON文件的键缺失与类型不匹配问题
我有两个大型翻译.json文件,希望在出现键缺失或键的结构/类型不匹配时触发错误。举个例子:a.json中的b键在b.json里缺失,且两者的c键结构不同,这类问题都需要被识别出来。
我已经写了一段TypeScript类型差异判断代码,但没法实现递归检测,而且最终只需要获取不匹配的键路径,用来构建自定义编译时错误。相关示例代码和当前实现如下:
示例JSON文件
a.json
{ "a": "hello", "b": {}, "c": {} }
b.json
{ "a": "ciao", "c": { "d": "mondo" } }
当前TypeScript实现代码
type A = { a: string; b: { c: string; }; c: string; }; type B = { a: string; c: {}; }; type Prettify<T> = { [K in keyof T]: T[K] } & {}; type Difference<T, U> = { [K in keyof T as K extends keyof U ? T[K] extends U[K] ? never : K : K]: T[K]; }; type MismatchedKeys = Prettify<Difference<A, B> & Difference<B, A>>;
当前输出结果
type MismatchedKeys = { b: { c: string; }; c: {}; }
现在的问题是:我需要仅提取不匹配的键路径,并且实现递归判断(嵌套对象内部的键不匹配也要被检测到)。
内容的提问来源于stack exchange,提问作者Nullndr
相关产品推荐
相关产品推荐

