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

如何在TypeScript中声明交叉类型的对象数组?

TypeScript交叉类型数组的正确声明方式

你之前的写法出错是因为TypeScript的类型运算符优先级问题——&的优先级比数组符号[]低,所以User & {RegistrationDate:Date}[]会被解析成User和一个{RegistrationDate:Date}类型数组的交叉,这显然不是你要的结果。

要正确声明交叉类型的对象数组,有两种常用方式:

方式一:用括号包裹交叉类型后加数组符号

直接把完整的交叉类型用括号括起来,再添加数组标识,就能明确表示这是一个由交叉类型对象组成的数组:

type User = {
  Name: string;
};

// 声明空数组,后续按需填充
const registeredUsers: (User & { RegistrationDate: Date })[] = [];

// 示例:添加符合类型的对象
registeredUsers.push({
  Name: "Alice",
  RegistrationDate: new Date()
});

方式二:先定义交叉类型别名,再声明数组

如果这个交叉类型需要多次使用,先定义一个类型别名会让代码更清晰:

type User = {
  Name: string;
};

// 定义交叉类型的别名
type RegisteredUser = User & { RegistrationDate: Date };

// 声明该类型的空数组
const registeredUsers: RegisteredUser[] = [];

// 示例:填充数据
registeredUsers.push({
  Name: "Bob",
  RegistrationDate: new Date("2024-01-01")
});

内容的提问来源于stack exchange,提问作者Giorgi Gvimradze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:34