2017-11-10 205 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