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

如何在TypeScript中声明JSON对象数组类型的接口属性?

解决TypeScript接口定义问题

你的代码有两个关键问题:

  • TypeScript的接口(interface)只负责定义类型结构,不能直接给属性赋值(比如= []这种写法是不允许的)。
  • 用JSON类型来描述你的嵌套结构太宽泛了,应该明确定义每个层级的类型,这样才能获得TypeScript的类型校验优势。

正确的类型定义方式

先把你的嵌套结构拆分成更细的类型,再组合起来:

// 定义城市类型
interface City {
  zip_code: string;
}

// 定义单个地址项里的first_address结构
interface FirstAddress {
  city: City;
}

// 定义数组里的每一项
interface AddressItem {
  first_address: FirstAddress;
}

// 最终的用户接口
interface IUser {
  addresses: AddressItem[];
}

如果需要给addresses设置默认空数组,要在实现接口的对象里设置,而不是在接口里:

// 创建符合IUser接口的对象,设置默认空数组
const user: IUser = {
  addresses: []
};

// 之后可以按照定义的结构添加数据
user.addresses.push({
  first_address: {
    city: {
      zip_code: "100000"
    }
  }
});

简化写法(用类型别名)

如果觉得拆分成多个接口太繁琐,也可以用类型别名(type)直接写嵌套结构:

type AddressItem = {
  first_address: {
    city: {
      zip_code: string;
    };
  };
};

interface IUser {
  addresses: AddressItem[];
}

// 使用示例
const user: IUser = { addresses: [] };

这样定义后,TypeScript会严格校验addresses数组里的每个对象结构,避免不符合格式的数据被存入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:42:45