Javascript对象的这种语法是什么?文字!:一串

Javascript对象的这种语法是什么?文字!:一串,javascript,ecmascript-6,Javascript,Ecmascript 6,就像我问的,有一个!在JS对象的键声明中冒号之前 类的MikroORM语法 @Entity() export class Post { // the @PrimaryKey invokes a function that takes the returned key/value pair and adds it as a column / information @PrimaryKey() id!: number; @Property({ type: "date&qu

就像我问的,有一个!在JS对象的键声明中冒号之前

类的MikroORM语法

@Entity()
export class Post {
  // the @PrimaryKey invokes a function that takes the returned key/value pair and adds it as a column / information
  @PrimaryKey()
  id!: number;

  @Property({ type: "date", default: "NOW()" })
  createdAt = new Date();

  @Property({ type: "date", default: "NOW()", onUpdate: () => new Date() })
  updatedAt = new Date();

  @Property({ type: "text" })
  title!: string;
}
在JavaScript中,这是一个语法错误,但您显示的代码是代码。TypeScript是添加类型信息的JavaScript超集。在TypeScript中,
text!:string
是一种类型定义,表示:

  • 有一个叫做
    text
    (在本文中,我希望它是一个变量,而不是一个对象属性)
  • 它的类型是
    string
  • 即使从上下文看不出这是真的
编辑:现在您已经显示了完整的
定义,下面是
Post
类的说明:

  • 类型为
    number
    id
    属性,即使
    构造中的代码未显示初始化,也会明确分配/初始化该属性

  • new Date()
    初始化的
    createdAt
    属性(这将使TypeScript推断其类型为
    Date

  • updatedAt
    属性也用
    new Date()初始化

  • 类型为
    string
    title
    属性,它与
    id
    一样,是绝对初始化的,即使该初始化未显示在
    类中

  • 它使用与ORM相关的各种装饰器,如
    @PrimaryKey
    ,将这些属性连接到模型,并说明ORM应该如何处理它们


这些明确的赋值/初始化断言在使用ORM的类代码中并不少见。

如果您提供一个代码示例来给我们提供上下文,您的问题会更容易理解。从未见过这样的情况。举个真实的例子怎么样<代码>是布尔
not
运算符。从您的描述来看,它似乎是。如果您可以发布更大的代码示例,以便我们可以在上下文中看到它,这会有所帮助。但是如果我不得不猜测的话,您正在处理TypeScript(而不仅仅是JavaScript),感叹号是,它告诉TypeScript编译器该属性有一个值(在编译器无法推断该属性本身的情况下,例如,在构造函数中使用
Object.assign
)。
{key!:“val”}
在js控制台中抛出语法错误