{a:Array <(s:string)=> void>,b:Array <()=> void>} //无法调用类型缺少调用签名的表达式

时间:2019-01-10 00:06:07

标签: typescript

喜欢这个问题: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如何调用可能具有两个不同签名的函数?

0 个答案:

没有答案