【问题标题】:Angular / Typescript method with optional args带有可选参数的 Angular / Typescript 方法
【发布时间】:2021-02-09 12:06:37
【问题描述】:

我有一个方法:

 mymethod(arg1, arg2, arg3, arg4): void {
   // do something
 }

我的问题是...如何设置它以使任何 arg 都是可选的?

【问题讨论】:

  • arg1?, arg2?, arg3?, arg4? 虽然这不会让你(轻松)通过第四个,例如。
  • 我建议使用一个对象参数,以便您可以轻松检测,例如,arg2 是否已定义
  • 可以使用对象作为参数myMethod(myArgs:{arg1?: any, arg2?:any ....}){if(myArgs.arg1){// Do magic with arg1}}
  • 所以如果我只想通过第四个,我会这样做: mymethod(null, null,null,'something here') 吗?这有效吗?
  • @tumec 有效但不是最佳方法

标签: angular typescript


【解决方案1】:

要实现这一点,您可以使用在 cmets 中编写的对象参数。您可以在下面找到工作代码 sn-p:

interface ITest {
    arg1?: string;
    arg2?: string;
    arg3?: string;
    arg4?: string;
}

function callTest(args: ITest): void {
    console.log(args);
    if(args.arg2) {
        console.log('arg2 is set')
    }
}

const obj: ITest = {
    arg1 : 't1'
};

callTest(obj);
callTest({ arg1: '1', arg2: '2'});

【讨论】:

    【解决方案2】:

    试试这样的

    const myMethod = ({arg1, arg2, arg3}) => {
      console.log(arg1, arg2, arg3);
    };
    myMethod({arg1: 1, arg3: 255})

    这样您可以添加任意数量的参数。

    如果你在 python 中寻找类似 kwargs 的东西,请查看Splat operators in JavaScript, equivalent to *args and **kwargs in Python?

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2013-08-11
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 2017-09-02
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多