# flexargs **Repository Path**: zhangfisher/flexargs ## Basic Information - **Project Name**: flexargs - **Description**: 方便地解析输入参数,简化函数接受多种传参方式的工具。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-02-12 - **Last Updated**: 2024-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: arguments ## README 当函数具备多个函数签名时,`flexArgs`可以方便地解析输入参数,使函数接受多种传参方式。 # 安装方法 ```javascript npm install flexargs ``` # 使用方法 ```javascript import flexArgs from "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`: ```javascript // 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=,options:{x:2,z:9} myfunc("ccc",function(){}) // name="ddd",count=0,callback=,options:{x:1,y:2,z:9} myfunc("ddd",function(){},{x:1,y:2}) ``` 同时也支持以下传参: ```javascript myfunc({name:"jack",count:1}) ``` # 数据类型 指定数据类型时可以取值: - 字符串:`number`,`string`,`function`,`any` - 对象: `Object`,`String`,`Number`,`Boolean`,`Function`,`Array` # 字典传参 flexArgs可以通过位置参数进行匹配,当只有一个参数,且类型为`Object`时,采用字典传参匹配模式。 ```javascript myfunc({name:"jack",count:1,options:{},callback:()==>{}) ``` # 任意类型 参数类型增加any,可以指定某个参数的类型为`any`。如 ```javascript 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",{}) ```