NodeJS 如何删除属性“message”在ts中没有初始值设定项错误而不屏蔽错误

yhived7q  于 2023-02-03  发布在  Node.js
关注(0)|答案(1)|浏览(144)

我使用ts和sequelize在node js中创建一个模型

import { Table, Column, Model, AllowNull } from 'sequelize-typescript';

@Table
class Person extends Model {
  @Column
  @AllowNull(false)
  name: string;

  @Column
  birthday: Date;
}

但我得到的属性'name'没有初始化式,也没有在构造函数中明确赋值
我不想用空字符串初始化它。但我也不想添加

strictPropertyInitialization": false

并屏蔽错误。
正确的变通方法是什么?

plicqrtu

plicqrtu1#

可以按如下方式使用!?

@Table
class Person extends Model {
  @Column
  @AllowNull(false)
  name!: string; // <---- Type: string

  @Column
  birthday?: Date; // <---- Type: Date | undefined
}

!符号用于指示属性永远不会被定义,这意味着如果没有为该属性赋值,它将抛出错误。另一方面,?符号用于指示属性可以被定义,这意味着如果没有为该属性赋值,它将被视为未定义。

相关问题