typescript在for in循环中的不能推断键值类型?

image.png

ts自己能推断出obj的键值有a和b, 但是为什么一到for循环中就不知道了呢?

image.png

在这里他只能推断出键值是string, 为什么不是'a'|'b', 请问ts这么设计是出于哪些情况下的考虑呢?

提问的原因在这里
image.png

image.png

阅读 3.2k
2 个回答

不然呢?对象的键就是 string 类型啊?你是想让它推断成 'a' | 'b' 吗?

我的解决方案如下

interface MyProps {
    a: string;
    b: string
}

const obj:MyProps = {
    a: '1',
    b: '2'
}

for (let i in obj) {
    console.log(obj[i as keyof MyProps])
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题