gpt4 book ai didi

typescript - 具有指定参数的函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:51 26 4
gpt4 key购买 nike

为什么在下面的代码中允许我分配与变量类型指定的签名不同的函数?我应该如何更改 Func 类型以不允许此类赋值?

type Func = (a: string, ...rest: any[]) => Promise<any>;
let f: Func = () => Promise.resolve() // why no error although string argument is missing?

最佳答案

基本上,Typescript 不会强制您输入不需要的函数参数。在您的情况下,您的方法主体不使用任何传递的参数,即使您将它们键入。所以你可以跳过它们。

但是以下是不允许的:

type Func = (a: string, ...rest: any[]) => Promise<any>;
let f: Func = (a: boolean) => Promise.resolve()

因为现在函数签名肯定不匹配。

但是您可以传递部分参数。允许以下内容:

type Func = (a: string, ...rest: any[]) => Promise<any>;
let f: Func = (a: string) => Promise.resolve()

即使我们跳过 ...rest 参数,函数签名仍然被 Typescript 接受。

可以这样想:如果您的函数签名没有定义参数,您也无法对传递给该函数的参数进行任何计算。因此不可能传递错误类型的参数。所以就 Typescript 而言,一切仍然是类型安全的 :)

关于typescript - 具有指定参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com