You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归提取两个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:20:13