2017-11-10 7 views
0

lodashで機能「を選択すると、」次のように使用されているピック機能を持っていますタイプセーフを書くtypescriptです

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

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

私はtypescriptですこのの型保証されたバージョンを書きたいと思います。この機能の

使用法は、目標は二度同じキーを指定しないで、そして同時に型の安全性を保全

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

でなければなりません。

これは実現可能ですか?

+0

あなたの選択機能は、ロダッシュの例とは異なる署名をしているようですか?これらの2番目と3番目のパラメータ(特に3番目のパラメータ)は何ですか? – 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 
関連する問題