2017-11-10 206 views
0

lodash写类型安全的“挑”的功能有一个用来如下挑功能:在打字稿

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pick(object, ['a', 'c']); 
// => { 'a': 1, 'c': 3 } 

我想在打字稿写的这一个类型安全的版本。这个功能的

用法应该是

pick(object, o => o.a, o.b) 

的目标不是指定两次相同的密钥,并在同一时间养护类型安全。

这可能实现吗?

+0

您的选择函数似乎有一个不同于lodash示例的签名?那些第二和第三个参数(特别是第三个参数)是什么? – CRice

回答

0

听起来像你可能正在寻找Pick type。像这样的东西适合你吗?

function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> { 
    const ret: any = {}; 
    keys.forEach(key => { 
    ret[key] = obj[key]; 
    }) 
    return ret; 
} 

const o = {a: 1, b: '2', c: 3} 
const picked = pick(o, 'b', 'c'); 

picked.a; // not allowed 
picked.b // string 
picked.c // number