联合类型和数组迭代

问题描述

我有一个这样的界面:

interface foo {a: "first",b: "second"}

我正在使用类似的函数来推断类型:

const myFunc = <P extends keyof foo>(prop: P,value:SomeObject[P]) => {
return console.log(P +":" + value)
}

然后我这样做:

Object.keys({a: "something",b: "somethingelse"}).map((x,id) => {
 myFunc(a,"randomtext")
})

我得到一个错误: 类型'string'的参数不能分配给类型'“ a”的参数| “ b””。

为什么会这样?

解决方法

Object.keys的返回类型始终为string [],无论传递给它的参数为何