for(const item in myRecord); myRecord是一个Record<string,int>类型的数据,为什么这个item拿到的是string,而不是一个键值对

for(const item in myRecord); myRecord是一个Record<string,int>类型的数据,为什么这个item拿到的是string,而不是一个键值对

在 TypeScript 中,当您使用 for...in 循环迭代一个对象时,它会迭代对象中可枚举的属性(包括继承而来的属性)。而在 Record<string, int> 类型的数据中,键的类型为 string,值的类型为 int。因此,在使用 for...in 循环迭代该对象时,每个键都被视为一个字符串类型。

所以,当您通过 for...in 循环迭代一个 Record<string, int> 类型的对象时,循环中的变量 item 对应的是该对象中的每个键(即字符串类型),而不是键值对。

如果您想要遍历这个对象的所有键值对,可以使用 Object.entries() 方法将其转换为一个由 [key, value] 数组组成的数组,然后再进行迭代,如下所示:

const myRecord: Record<string, number> = { 'a': 1, 'b': 2 };

for (const [key, value] of Object.entries(myRecord)) {
  console.log(key, value); // 输出 'a' 1 和 'b' 2
}

使用 Object.entries() 方法将 myRecord 对象转换为一个由 [key, value] 数组组成的数组,并使用解构方式获取数组中的每个元素,从而得到了每个键值对。

如果我这个record里面有多个键值对?

如果您的 Record<string, int> 类型的数据中有多个键值对,您可以使用 for...in 循环进行迭代,依次访问所有的键和值。例如,假设我们有以下 myRecord 对象:

const myRecord: Record<string, number> = { 'a': 1, 'b': 2, 'c': 3 };

您可以通过以下方式循环遍历这个对象:

for (const key in myRecord) {
  if (Object.prototype.hasOwnProperty.call(myRecord, key)) {
    const value = myRecord[key];
    console.log(`${key}: ${value}`);
  }
}

在上述代码中,我们使用 for...in 循环来遍历对象中的所有属性(即键)。然后,我们使用 hasOwnProperty() 方法来检查每个属性是否为对象本身的属性,以避免意外访问到继承的属性。接着,我们通过 myRecord[key] 来获取每个键对应的值,并将其打印出来。

输出结果为:

a: 1
b: 2
c: 3

总结下来还是定义Dto比较方便后期维护

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值