如何解决TypeScript定义数据库映射类时属性无初始化值的编译报错
报错原因
这是TypeScript开启严格属性初始化检查后的正常提示,要求类属性必须在声明时赋值、或在构造函数中完成赋值。
前置注意点:你当前TypeScript的Employee类中定义的
fname属性与后端JPA实体返回的firstName字段不匹配,后续接口数据赋值会取不到对应值,建议先统一属性名为firstName。
解决方法1:添加明确赋值断言
如果你确定这些属性会在类实例化后通过其他方式(比如后端接口返回值赋值)完成赋值,可以在属性类型前加!明确告知TypeScript该属性一定会被赋值,无需编译阶段检查:
export class Employee { id!: number; firstName!: string; lastName!: string; emailId!: string; }
解决方法2:给属性设置初始值
直接在声明属性时赋予初始值,符合编译检查要求:
export class Employee { id: number = 0; firstName: string = ''; lastName: string = ''; emailId: string = ''; }
解决方法3:添加构造函数赋值
和你Java侧的Employee类写法对应,通过构造函数完成属性赋值:
export class Employee { id: number; firstName: string; lastName: string; emailId: string; constructor(firstName: string, lastName: string, emailId: string, id?: number) { this.id = id ?? 0; this.firstName = firstName; this.lastName = lastName; this.emailId = emailId; } }
解决方法4(不推荐):关闭编译检查
修改项目根目录下的tsconfig.json配置,关闭严格属性初始化检查:
{ "compilerOptions": { "strictPropertyInitialization": false } }
该方法会失去对应类型校验能力,仅建议临时调试使用。
内容的提问来源于stack exchange,提问作者Ishini Nadeesha
相关产品推荐
相关产品推荐

