显然这是一个已知问题。建议的解决方法使我的IDE停止抱怨,它可以正常运行,但是我收到Angular CLI构建TS错误,这导致我的CI / CD管道失败。
令人讨厌的行是Object.assign(...args)
,其中args是对象的动态大小数组,导致出现以下错误
错误TS2557:预期至少有1个参数,但最小值为0。
完整的代码和上下文是
_.chain(myObjects)
.groupBy((obj: MyObject) => obj.someParam)
.each((args: [MyObject, MyObject, MyObject]) => {
Object.assign(...args);
});
第三行曾经是args: MyObject[]
,但是却引起了IDE错误,因此对于包括https://github.com/Microsoft/TypeScript/issues/4130在内的各种线程,我将其更改为上面的内容,但是我仍然在构建时遇到错误
如前所述,它可以运行并完美运行,Object.assign(... args)精美地合并了args数组中的所有对象。唯一的问题是编译器使我的CI / CD管道瘫痪并使之失败。
答案 0 :(得分:2)
问题是Object.assign
至少需要一个参数,但是类型MyObject[]
可能是一个空数组。您必须以某种方式说服编译器,使得数组中至少有条目。例如:
_.chain(myObjects)
.groupBy((obj: MyObject) => obj.someParam)
.each(([target, ...rest]: MyObject[]) => {
Object.assign(target, ...rest);
});
或者,如果您愿意使用as
关键字“作弊”:
_.chain(myObjects)
.groupBy((obj: MyObject) => obj.someParam)
.each((args: MyObject[]) => {
Object.assign(...args as [MyObject]);
});