查看代码:
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
。有人可以解释为什么会这样吗?