打字稿没有根据回调返回类型选择正确的重载

时间:2014-05-18 20:28:47

标签: typescript

给出以下代码(游乐场链接:http://bit.ly/1n7Fcow

declare function pick<T, V>(f:(x:T, y:V) => V):V;
declare function pick<T, V>(f:(x:T, y:V) => T):T;
var xx = pick((x: number, y:string) => x);
var yy = pick((x: number, y:string) => y);

TypeScript选择了不正确的重载,无法推断xx的类型。

是否可以让打字稿在那里选择正确的重载?

注意:为了避免XY问题,这是原始问题 - http://bit.ly/QXaQGc - 我需要这种重载才能正确建模承诺。

1 个答案:

答案 0 :(得分:1)

通过更改对此的调用,我能够让操场正确地推断出正确的xx和yy类型:

declare function pick<T, V>( f:(x:T, y:V) => V ):V;
declare function pick<T, V>( f:(x:T, y:V) => T ):T;

var xx = pick<number,string>((x, y) => x);
var yx = pick<number,string>((x, y) => y);

见这里:http://bit.ly/1p6h8iP 希望这有帮助。