#独家
TypeScript在调用参数一致的函数的时候如何确认是传入的哪个参数呢?

2023-08-05 0 1,916

typescript有如下代码:

const func = (a?: {x: number, y: number}, b?: {x: number, y: number}) => {
  // 
}


func({x: 1, y: 2})

请问一下,我们在调用的时候,如第二行,直接传{x:1, y:2}
请问一下,这里不能这样传输:

func(a: {x: 1, y: 2})

那么在执行代码的时候,如何进行确定是a还是b呢?

这跟 TS 有什么关系?TS 就是个类型标记,代码执行的时候只剩下 JS。

去掉类型,就只是:

const func = (a, b) => {
  // 
}
func(arg1, arg2);

实参跟形参是一一对应的,传入的第一个参数 arg1 就对应 a,传入的第二个参数 arg2 就对应 b,这又不可能串位置。

即便第一个参数是个可选参数,你想跳过第一个、直接指定第二个参数,那你也得传个 undefined 进去才行:

func(undefined, { x: 1, y: 1 });

如果你想要的是更彻底一点儿的,形参顺序跟实参顺序不用严格对照,可以直接:

func(b: { x: 1, y: 1 });

这样给第二个参数 b 传值。

那很遗憾,JS/TS 没这样的语法特性。其他语言中倒是有类似的特性,比如 C# 中的命名参数(Named Arguments),Ruby 中的关键字参数(Keyword Arguments)等等。

  1. typescript 中调用方法时,只能按照顺序将实参和形参对应;
  2. typescript 不支持 func(a: {x: 1, y: 2}) 这样的语法(Dart 支持),如果想实现任意顺序传参,可以选择将方法的形参改造为一个对象,示例如下:
interface Params {
  a?: SomeObject;
  b?: SomeObject;
}

function func(params: Params = {}) {
  console.log(params.a, params.b);
}

// 或者直接解构params
function func({ a, b }: Params = {}) {
  console.log(a, b);
}

func({b: {}});

回复

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 TypeScript在调用参数一致的函数的时候如何确认是传入的哪个参数呢? https://www.jkxiazai.com/2401.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务