段:
class A {
x: number;
}
class B extends A {
y: number;
}
var f1: { (y: A): void } | { (y: B): void };
f1 = (y)=>{} // y :any
var f2: { (x: number): (y: A) => void } | { (x: number): (y: B) => void };
f2 = ((x) => { return (y)=>{}; }); //y :A
为什么当f1
y
参数的any
参数具有f2
类型时,箭头函数的上下文类型,但y
A
{{1}}参数有{{1}}类型?
答案 0 :(得分:1)
每当上下文类型是潜在签名的 union 时,所有这些签名必须完全相同。这包括参数类型。
原因是它对你可能想要的东西含糊不清。你可以想象逻辑说"联合函数可以满足的所有签名的参数",但是工作还没有完成。
作为一种参考,这里是我们的源代码中涵盖它的部分:
display:list-item