给出以下代码(游乐场链接: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);
Run Code Online (Sandbox Code Playgroud)
TypeScript选择了不正确的重载,无法推断出类型xx
.
是否有可能使打字稿选择正确的超载?
注意:为了避免XY问题,这是最初的问题 - http://bit.ly/QXaQGc - 我需要这种重载才能正确建模promises.
通过更改对此的调用,我能够让游乐场正确推断 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);
Run Code Online (Sandbox Code Playgroud)
请参阅此处: http: //bit.ly/1p6h8iP 希望有所帮助。
归档时间: |
|
查看次数: |
447 次 |
最近记录: |