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

能否定义可迭代的TypeScript接口?如何用其声明对象并遍历?

在TypeScript中定义接口并使用Object.entries遍历对象

步骤1:定义TypeScript接口

通过interface关键字定义匹配对象结构的接口,明确每个属性的类型:

interface MyObject {
  a: string;
  b: number;
}

步骤2:用接口声明对象

使用定义好的接口约束对象类型,确保对象结构符合预期:

const object1: MyObject = {
  a: 'somestring',
  b: 42,
};

步骤3:使用Object.entries遍历对象

和JavaScript的写法一致,直接通过Object.entries遍历即可,默认执行结果和JS完全相同:

for (const [key, value] of Object.entries(object1)) {
  console.log(`${key}: ${value}`);
}

// 输出:
// "a: somestring"
// "b: 42"

优化类型精度(可选)

默认情况下TypeScript会把遍历得到的value类型推断为unknown,如果需要更精确的类型提示,可以通过以下两种方式处理:

方式1:类型断言

直接对Object.entries的返回值做类型断言,指定键值对的精确类型:

for (const [key, value] of Object.entries(object1) as Array<[keyof MyObject, MyObject[keyof MyObject]]>) {
  console.log(`${key}: ${value}`);
  // 此时key类型为"a" | "b",value类型为string | number
}

方式2:泛型工具函数

封装一个泛型函数,复用精确类型的断言逻辑:

function typedEntries<T extends object>(obj: T): Array<[keyof T, T[keyof T]]> {
  return Object.entries(obj) as Array<[keyof T, T[keyof T]]>;
}

// 使用封装后的函数遍历
for (const [key, value] of typedEntries(object1)) {
  console.log(`${key}: ${value}`);
  // 同样能获得精确的类型提示
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:48:16