如何将函数类型应用于函数声明

kim*_*gro 31 typescript

给定以下类型:

type Add = (x:number, y:number) => number
Run Code Online (Sandbox Code Playgroud)

我可以声明const该类型的 a 并定义函数的其余部分,而无需显式指定类型。Typescript 知道那x是一个数字,而且确实y是一个数字。

const add: Add = (x, y) => x + y;
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用function而不是定义函数const,但是似乎没有办法输入完整的函数声明。看来您被迫单独定义参数和返回类型。有什么方法可以使用Add下面声明中的类型,这样我就不必指定它x是一个数字并且y是一个数字

function add(x, y) {
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

而不被迫做类似的事情

function add(x: Parameters<Add>[0], y: Parameters<Add>[1]): ReturnType<Add> {
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

Tit*_*mir 18

您不能指定函数声明的类型。您只能使用ParametersReturnType。唯一的小改进是对参数使用解构:

type Add = (x:number, y:number) => number
function add(...[x, y]: Parameters<Add>): ReturnType<Add> {
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接