나는이 기능을 유용하게 입력하고 싶습니다 applyObject
있습니다.Getter 객체를 값에 매핑하는 방법은 무엇입니까?
type V = { [key: string]: <R>(t: T) => R };
및 T
내가 적용될 때 V
의 모든 기능을 통해 먹이고 싶은 유형입니다 : V
이 기능의 목적은 어디 함수에 paramters는 T
및 V
의이다. 이 일을 할 수있는 방법이 있습니까?
매핑 된 유형이 가능하다고 생각하지만 확실하지 않습니다.
function applyObject<T, V extends { [key: string]: (t: T) => any }>(t: T, v: V) {
return Object.entries(v).reduce((applied, [_key, func]) => {
const key = _key as keyof V;
applied[key] = func(t);
return applied;
}, {} as {[P in keyof V]: Invoke<V[P]>}); // `Invoke` doesn't exist
}
const applied = applyObject(
{ one: 1, two: 'something' },
{ a: t => t.one, b: t => t.two }
);
applied.a; // should give intellisense as number
applied.b // should give intellisense as string
나는 가능하지 않다고 생각한다. 문제는 'V'도 잘 입력되지 않았기 때문에,'V '의 모든 함수는'T'를 사용하고 어떤 타입을 반환 할 수 있다고 생각하고 싶다. , 그러나 당신이'R'을 정의하는 방식은 함수가 아닌 호출자의 몫입니다. –
@ TitianCernicova-Dragomir 질문에서'R'을 삭제했습니다. 필요한지 확실하지 않습니다. –