打字稿:旁边没有指定类型的回调参数会破坏代码

时间:2019-02-07 14:49:16

标签: typescript typescript-typings

查看代码:

interface Bar<T> {
    <B_RETURN>(
        a: (aParam: B_RETURN) => any,
        b: (bParam: T) => B_RETURN // B_RETURN is supposed to be inferred from here
        ): any
}

declare const bar: Bar<any>

bar((aParam) => 1, () => 'abc') // OK! `aParam` is `string`
bar((aParam) => 1, (bParam) => 'abc') // `aParam` is `{}`. Why?
bar((aParam) => 1, (bParam: any) => 'abc') // `aParam` is `string`. Again, why?
let arg2 = (bParam) => 'abc' ; bar((aParam ) => 1, arg2) // `aParam` is `string`. Again, why?
在四个示例中的每个示例中,

aParam应该是string,但是由于某些原因,在第二个示例中它应该是{}而不是string。有人可以解释为什么会这样吗?

Playground

0 个答案:

没有答案