如何通过数据库在 TypeScript 类中定义属性?
Posted
技术标签:
【中文标题】如何通过数据库在 TypeScript 类中定义属性?【英文标题】:How to define properties in TypeScript class through the database? 【发布时间】:2021-11-05 01:19:33 【问题描述】:这是我在 employee.ts
中定义属性时的错误
click
export class Employee
id:number;
fname: string;
lastName:string;
emailId: string;
&我遇到了这种错误
属性 'id' 没有初始化器,也没有明确分配 构造函数。
属性 'fname' 没有初始化器,也没有明确分配 构造函数。
属性“lastName”没有初始值设定项,也没有明确分配 在构造函数中。
属性“emailId”没有初始值设定项,也没有明确分配 在构造函数中。
这也是我的数据库 click
mysql> SELECT *
-> FROM employees;
+----+-----------------+------------+-----------+
| id | email_id | first_name | last_name |
+----+-----------------+------------+-----------+
| 1 | mara@gmail.com | Amara | Perera |
| 2 | sadun@gmail.com | Sadun | Fernando |
+----+-----------------+------------+-----------+
2 rows in set (0.01 sec)
这是在 eclips IDE 上创建的 myY Employee.java 文件
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "employees")
public class Employee
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "first_name")//column annotation to provide columns
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email_id")
private String emailId;
public Employee()
//generate constructor
public Employee(String firstName, String lastName, String emailId)
super();
this.firstName = firstName;
this.lastName = lastName;
this.emailId = emailId;
public long getId()
return id;
public void setId(long id)
this.id = id;
public String getFirstName()
return firstName;
public void setFirstName(String firstName)
this.firstName = firstName;
public String getLastName()
return lastName;
public void setLastName(String lastName)
this.lastName = lastName;
public String getEmailId()
return emailId;
public void setEmailId(String emailId)
this.emailId = emailId;
Enyone 可以帮我解决这个错误吗?
【问题讨论】:
【参考方案1】:TypeScript 试图警告你这样的场景:
const employee = new Employee();
因为此时employee
中的所有属性都未定义,但您将它们定义为数字和字符串。您可以将属性设为可选,在构造函数中初始化它们或将以下内容添加到 tsconfig.json:
"strictPropertyInitialization": false
在 Java 中你没有这种类型的检查。
【讨论】:
“在 Java 中你没有 [this] 类型的检查。”好吧,您这样做了,但是在构造函数中分配了每个字段,因此问题得到了解决。 我在 Java 方面工作不多,但我不记得它有那种类型的检查。 Java 将让您没有构造函数,而只使用 setter。它不会警告您某个属性可能未正确初始化。因此空指针异常地狱:D【参考方案2】:编译器看到缺少初始化代码的显式类型。您应该将字段标记为可能未定义
class Employee
id?: number;
或在构造函数中初始化它们
export class Employee
constructor(public readonly id: number)
【讨论】:
以上是关于如何通过数据库在 TypeScript 类中定义属性?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们不能在 TypeScript 类中定义一个 const 字段,为啥静态只读不起作用?