1.0.1 • Published 2 years ago

flexargs v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

当函数可以接受多种传参方式时,需要自己解析arguments参数。

flexArgs可以方便地解析输入参数,使函数接受多种传参方式。

安装方法

    npm install flexargs

使用方法

 function myfunc(){
    // 对参数进行自动匹配和解析
    let { name, callback ,count,options } = flexArgs(
    [                                       // 定义5种传参方式
        {name:String},
        {count:Number},
        {name:String,options:Object},
        {name:String,callback:Function},
        {name:String,callback:Function,options:Object} 
    ],
    arguments,                              // 必须的
    {                                       // 可选的默认参数
        name:"tom",
        count:0,
        options:{x:2,z:9}
    })
    .....
 }

以上示例声明了myfunc函数支持5种传参方式,因此就可以非常任性也以如下方式调用myfunc:

//  name="aaa",count=0,callback=undefined,options:{x:2,z:9}
myfunc("aaa")                  
//  name="tom",count=1,callback=undefined,options:{x:2,z:9}
myfunc(1)                     
//  name="bbb",count=0,callback=undefined,options:{x:1,y:2,z:9}
myfunc("bbb",{x:1,y:2})        
//  name="ccc",count=0,callback=<function>,options:{x:2,z:9}
myfunc("ccc",function(){})     
//  name="ddd",count=0,callback=<function>,options:{x:1,y:2,z:9} 
myfunc("ddd",function(){},{x:1,y:2})    
 

同时也支持以下传参:

myfunc({name:"jack",count:1})

数据类型

指定数据类型时可以取值:

  • 字符串:numberstringfunctionany
  • 对象: ObjectStringNumberBooleanFunctionArray

字典传参

flexArgs可以通过位置参数进行匹配,当只有一个参数,且类型为Object时,采用字典传参匹配模式。

myfunc({name:"jack",count:1,options:{},callback:()==>{})

任意类型

参数类型增加any,可以指定某个参数的类型为any。如

 function myfunc(){
    let { name, payload,count } = flexArgs([              
        {name:String,payload:'any'}
        {name:String,count:Boolean}
    ],arguments)
 }
// 以下第三个参数,可以是任意类型
myfunc("a",1)
myfunc("a",true)
myfunc("a","wxzhang")
myfunc("a",{})