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

如何在TypeScript中声明包含对象数组的对象的接口?

在TypeScript中声明对应接口的方案

针对你给出的对象结构,我们可以通过嵌套接口+索引签名来准确声明类型,具体步骤如下:

1. 定义最内层的点对象接口

首先为数组里的每个{x, y}对象单独声明接口,明确属性类型:

interface Point {
  x: number;
  y: number;
}

2. 定义外层的页面映射接口

外层对象的键是任意字符串(比如page1、dsfsfffsfs这类),值是Point类型的数组,用字符串索引签名约束这种结构:

interface PagePoints {
  [key: string]: Point[];
}

3. 声明变量并指定类型

现在就可以用这个接口约束你的变量了:

let obj: PagePoints = {
  "page1": [{ x: 1, y: 2 }, { x: 2, y: 5 }],
  "page2": [{ x: 1, y: 2 }, { x: 2, y: 5 }],
  "dsfsfffsfs": [{ x: 1, y: 2 }, { x: 2, y: 5 }]
};

补充:如果键有特定前缀规则(可选)

如果你的键都是类似pageN这种有规律的命名,也可以用模板字面量类型进一步约束键的格式:

type PageKey = `page${number}`;

interface PagePoints {
  [key: PageKey]: Point[];
  // 若需兼容其他任意字符串键,可添加此索引签名
  [other: string]: Point[];
}

内容的提问来源于stack exchange,提问作者Chris Hansen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:45:42