打字稿+ keyof。声明对象转换

时间:2017-02-06 00:13:07

标签: typescript functional-programming keyof

我试图了解keyof。

我想描述一个接收对象{ a : 1, b : 'anything'}的函数,并且应该返回类似{ a: true , b: false }的东西(相同的键,但总是布尔值)。

但是当我写(例子)时

function fn<K>(obj:K) : { [param:keyof K] : boolean } { /* ... */ }

...... TS说我param必须是字符串或数字。

这是有道理的,因为K可以是地图。我怎么能避免这个错误?我怎么能声明K是一个普通的JS对象(所以它的键总是字符串)? K extends {}无效。

1 个答案:

答案 0 :(得分:2)

应该是:

function fn<K>(obj: K): { [P in keyof K]: boolean } { /* ... */ }

mapped typeskeyof feature部分所示。