喜欢这个问题:Cannot invoke an expression whose type lacks a call signature,但有功能。
type AFunction = (s:string) => void;
type BFunction = () => void;
type Actions = { a: Array<AFunction>, b: Array<BFunction> };
let actions:Actions = [];
const doAction = (key:(keyof Actions), foo:(AFunction | BFunction)) => actions[key].push(foo);
我得到无法调用类型缺少调用签名的表达式。类型...没有兼容的呼叫签名。
通过大量的故障排除,我意识到foo无关紧要。重要的是,actions [key]可能是两种不同的函数,而Typescript不知道如何调用可能具有两种不同签名的函数。
我如何告诉Typescript如何调用可能具有两个不同签名的函数?