我可以将数组作为函数/构造函数参数传播,没有任何问题:(test.js)
class Person {
name;
age;
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let a = ['Claire', 8];
let p = new Person(...a);
console.log(p);
但是,同样的事情在 TypeScript 中不起作用:(test.ts)
class Person {
constructor(
public name: string,
public age: number
) {}
}
let a = ['Claire', 8];
let p = new Person(...a); // Error: An argument for 'name' was not provided.
console.log(p);
这是 TypeScript 中的错误吗?它无法弄清楚如何在这里使用扩展语法。是否有解决方法,或者我必须手动分配每个单独的参数?
最佳答案
选项 1:
let a: [string, number] = ['Claire', 8];
选项 2:
let a = ['Claire', 8] as const;
这将告诉 TypeScript 将 a
视为一个元组,其中包含 'Claire'
作为其第一项,8
作为其第二项,符合以下条件[字符串,数字]
。如果没有 as const
,a
会被视为 (string | number)[]
。
关于javascript - TypeScript 无法在扩展语法函数调用中推断数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61235755/