나는 예를 제외하고 내 주요 기능의 유형에 정직에제네릭에 함수라고 말해야합니까?
const main = <T>(root: T) => <K extends keyof T>(method: K, ...args: any[]) => {
root[method].apply(this, ...args);
};
를 'T [K]' 존재하지 않는 오류 속성이 '적용'이 있습니다
const main = <T>(root: T) => <K extends keyof T>(method: K, ...args: any[]) => {
(<any>root[method]).apply(this, ...args);
};
UPDATE를
아마도이 말은하지 않았지만 나는이 예를 의미했습니다 ...
UPDATE 2
LEVEL3 및 방법 레벨 4 (만)/5 번째 호출 - works perfectly!
내가 다른 유형의 level6를 추가하는 경우 (수) - everything collapses :(
이 그리고 그것은 매우입니다 흥미로운 이유는 첫 번째 전화가 항상 시간 오류? 당신이 운전을 할 경우이 경우
- 모든 결과는 '갑'과 '바'는 작동하지만 컴파일러 타이프 라이터는
나는 제네릭 함수가 전혀 필요 없다고 생각합니다. 당신이 찾고있는 것이 매우 구체적 인 것 같습니다. 제가 누락 된 것이 있습니까? –
다음과 같은 결과가 얻어진다. 새 예제에서는 UPDATE 2 –
구조가 매우 구체적입니다. 어떤 솔루션을 일반적인 것으로 만드는 것은 의미가 없습니다. 당신은 일을 너무 많이 끝내고 이해하기 어렵고 필요 이상으로 많은 코드를 포함하고 특정 솔루션보다 성능이 떨어지는 솔루션으로 끝날 것입니다. 나는 그 아이디어를 포기할 것을 강력히 권합니다. –