如何在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
相关产品推荐
相关产品推荐

