Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何使下面的代码具有正确的类型,以期望自动推断函数的返回值类型_Typescript - Fatal编程技术网

Typescript 如何使下面的代码具有正确的类型,以期望自动推断函数的返回值类型

Typescript 如何使下面的代码具有正确的类型,以期望自动推断函数的返回值类型,typescript,Typescript,在这里,res应该是一个数字,但实际上它被推断为any function f<T>(f: (v: Partial<T>) => any): ReturnType<typeof f> { return f({}) } const res = f<number>((v) => 0) // any 在第二个示例中,您不需要将传递到f: function f<T, F extends (v: Partial<T>) =

在这里,res应该是一个
数字
,但实际上它被推断为
any

function f<T>(f: (v: Partial<T>) => any): ReturnType<typeof f> {
  return f({})
}

const res = f<number>((v) => 0) // any

在第二个示例中,您不需要将
传递到
f

function f<T, F extends (v: Partial<T>) => any>(f: F): ReturnType<F> {
    return f({})
}
  
const res = f((v) => 0) // res:number

const res2 = f((p:{x?:string}) => p.x) // res2:string
函数f any>(f:f):返回类型{
返回f({})
}
常数res=f((v)=>0)//res:number
常量res2=f((p:{x?:string})=>p.x)//res2:string

将所有函数命名为
f
,这着实令人困惑。为什么会这样?缺少名字吗?有意义的名称将有助于区分“包装器”函数(可能还有函数的意图)和传入的函数(也可以有意义地命名)。更重要的是,它可以防止一个跟踪另一个。
function f<T, F extends (v: Partial<T>) => any>(f: F): ReturnType<F> {
    return f({})
}
  
const res = f((v) => 0) // res:number

const res2 = f((p:{x?:string}) => p.x) // res2:string