在Typescript中进行上下文输入

时间:2017-06-30 20:56:13

标签: typescript

段:

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}}类型?

1 个答案:

答案 0 :(得分:1)

每当上下文类型是潜在签名的 union 时,所有这些签名必须完全相同。这包括参数类型。

原因是它对你可能想要的东西含糊不清。你可以想象逻辑说"联合函数可以满足的所有签名的参数",但是工作还没有完成。

作为一种参考,这里是我们的源代码中涵盖它的部分:

display:list-item