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