Angular12实例化Contact类报ts(2554):需6个参数但收到0个
报错原因
该报错和你使用的Angular、Node版本无关,属于TypeScript基础语法校验问题:你在Contact类中定义的构造函数强制要求传入6个入参(id、nom、prenom、email、tel、photo),但你在组件中执行new Contact()时没有传入任何参数,不符合入参要求,因此触发了ts(2554)报错。
解决方案
根据你的使用场景可以选择以下任意一种方案:
- 方案1:给构造函数参数设置默认值,支持无参实例化
修改contact.ts的类定义,给所有构造参数设置默认值,还可以用TypeScript的参数属性语法简化代码,无需单独声明类属性:
export class Contact{ constructor( private id:number = 0, private nom:string = '', private prenom:string = '', private email:string = '', private tel:string = '', private photo:string = '' ){} }
修改后new Contact()就可以正常生成空实例,也支持传入参数赋值。
- 方案2:实例化时传入完整参数
如果你已经有联系人的全量数据,直接在实例化时传入对应参数即可:
contact:Contact = new Contact(1, 'Dupont', 'Jean', 'jean.dupont@example.com', '0123456789', 'avatar.jpg');
- 方案3:将实例声明为可选类型
如果这个联系人实例是用于表单绑定,后续才会赋值,你可以把属性类型标记为可选:
// 组件中的属性声明 contact?:Contact;
注意使用该属性时需要提前做空值判断,避免运行时报错。
内容的提问来源于stack exchange,提问作者Vincent BDL
相关产品推荐
相关产品推荐

