TypeScript中错误继承的函数返回类型?

时间:2018-11-12 14:13:20

标签: javascript typescript

我正在研究一个函数,该函数返回带有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()之所以返回以下错误,是因为打字稿将其视为数字或函数,而不是单纯的函数

1 个答案:

答案 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];
}