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

如何在TypeScript中定义含泛型对象的嵌套数组类型?

解决方案

要定义支持嵌套的数组类型,你需要使用递归类型处理嵌套数组场景。你之前的泛型仅处理数组的直接元素,没有递归适配元素本身为数组的情况,因此无法支持嵌套结构。

递归类型定义

// 基础元素:k1和k2必须为相同类型的对象
type ValidPair<T = unknown> = { k1: T; k2: T };
// 递归结构:可以是ValidPair,也可以是该结构组成的嵌套数组
type NestedStructure = ValidPair | readonly NestedStructure[];

验证示例

用你给出的测试结构验证:

const validExample: NestedStructure = [
  {k1: 'str', k2: 'str'},
  {k1: 12, k2: 23},
  [
    {k1: 'hh', k2: 'kk'}, 
    {k1: true, k2: false}
  ]
]; // 完全符合类型约束

// 错误案例:k1和k2类型不同
const invalidPair: NestedStructure = {k1: 'str', k2: 12}; // 类型报错
// 错误案例:嵌套数组中包含不符合规则的元素
const invalidNested: NestedStructure = [
  {k1: 'a', k2: 'b'},
  ['not a valid pair'] // 类型报错
];

类型说明

  • ValidPair<T> 确保每个对象的k1和k2类型严格一致,T可以是任意类型(字符串、数字、布尔等)。
  • NestedStructure 是递归联合类型:要么是单个ValidPair,要么是由NestedStructure组成的数组,自然支持任意层级的嵌套。

内容的提问来源于stack exchange,提问作者W.W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:29:59