为什么这个代码没有使用flow打字?
function runFunction<I, O>( fun: (...args:Array<I>) => O, args:Array<I> ): O {
var res = fun.apply(null, args);
return res;
}
function myFun(first: number, second: number): string {
return first + ", " + second;
}
runFunction(myFun, [1, 2]);
我认为我做的一切都是正确的,我仍然得到了这个
function type
Too few arguments (expected default/rest parameters in function)
function
rest array of type parameter I of function call
This type is incompatible with
number
答案 0 :(得分:0)
哦,现在我明白了。我必须这样做
function runFunction<I, O>( fun: (...args:Array<I>) => O, args:Array<I> ): O {
var res = fun.apply(null, args);
return res;
}
function myFun(...args:Array<number>): string {
return args[0] + ", " + args[1];
}
runFunction(myFun, [1, 2]);
所以,如果我得到正确的话,&#34;功能需要2个数字&#34;不是&#34;函数的子类型,它接受任何数量的任何参数&#34;,即使它在逻辑上 是一个子类型。
我不确定什么是正确的解决方案......我理解,有点,逻辑,但它有点令人困惑。