TypeScript 不显示“预期 1 个参数,但得到 0 个”。错误,应该在什么时候发生。
type PolyElement = [number, number];
export interface Node {
element: PolyElement | null;
next: Node | null;
}
export class Node {
constructor(element?: PolyElement) {
this.element = element ?? null;
this.next = null;
}
add(...args: PolyElement[]) {
for (let i = 0; i < args.length; ++i) {
//some code
}
}
}
然后我像这样调用方法:
poly1.add([1,2,3]);
并且它输出: “[number, number, number]”类型的参数不能分配给“PolyElement”类型的参数。属性“长度”的类型不兼容。类型 '3' 不可分配给类型 '2'.ts(2345)
还有
poly1.add([]);
输出:“[]”类型的参数不可分配给“PolyElement”类型的参数。类型“[]”缺少类型“[number, number]”的以下属性:0, 1ts(2345)
等等
问题是为什么:
poly1.add();
不输出类似的内容:预期至少有 1 个参数,但得到了 0。
?
最佳答案
这个语法
add(...args: PolyElement[]) {
意思是“给我尽可能多的参数(包括零)”。
您可以改为这样来强制执行至少一个参数:
add(...args: [PolyElement, ...PolyElement[]]) {
关于javascript - typescript 和 ...args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62961968/