Java可变参数在Angular中的等效实现:参数数量不定且永不为空
Angular/TypeScript 可变参数(对应Java可变参数)实现方案
你之前的写法问题在于,使用可选数组参数obj?: MyObj[]的语法含义是「要么不传参数,要么传一个符合MyObj[]类型的数组参数」,不是接收不定数量的单个参数,和你需要的可变参数逻辑不符。
你可以直接使用TypeScript的剩余参数语法实现需求,效果和Java的可变参数完全一致,参数永远为数组类型、不会为空,同时支持不定数量的参数传入:
// 函数定义 myFunction(...objs: MyObj[]) { // objs 类型固定为 MyObj[],永远不会是 null 或 undefined // 未传参时 objs 默认为空数组 [] }
调用方式完全兼容你需要的两种场景:
- 无参数调用:
myFunction()正常运行 - 任意数量参数调用:
myFunction(obj1, obj2, obj3)正常运行
如果需要传入已有的数组作为参数,搭配展开运算符即可:
const myObjArray: MyObj[] = [obj1, obj2]; myFunction(...myObjArray);
内容的提问来源于stack exchange,提问作者Elikill58
相关产品推荐
相关产品推荐

