我正在研究一个函数,该函数返回带有2个条目,一些值和一个函数的数组。简化版本如下:
export default function useAnimatedTiming(value: number) {
return [value, () => null];
}
Typescript继承此函数的返回值为:
function useAnimatedTiming(value:number):(number |(()=> null))[]
我所期望的像是
function useAnimatedTiming(value:number):[number,()=> null]
即返回有序类型的数组。我在这里可能做错了什么,但是如何获得这种类型的返回值,因为在进行数组解构以获取这些值(即
)时,它将非常方便const [myValue, myAction] = useAnimatedTiming(1);
myAction()
之所以返回以下错误,是因为打字稿将其视为数字或函数,而不是单纯的函数
答案 0 :(得分:1)
Typescript不会从数组文字中推断出元组类型(这正是您所期望的)。
您有两种选择,要么拼出返回类型:
class Program
{
static void Main(string[] args)
{
DefaultClass dc = new DefaultClass();
FirstClass fc = new FirstClass();
dc.SetSuccessor(fc);
SecondClass sc = new SecondClass();
dc.SetSuccessor(sc);
ThirdClass tc = new ThirdClass();
dc.SetSuccessor(tc);
dc.Execute();
}}
或者您可以创建一个函数,该函数将强制编译器将数组文字的类型推断为元组而不是数组:
export default function useAnimatedTiming(value: number): [number, () => null] {
return [value, () => null];
}