嗨,我不想一直添加公共列到所有实体。所以我想写它在单独的类,并扩展到那些需要这些列。我尝试了一些东西,但它是抛出“类只能扩展一个类”错误
我没有太多的手在TS上,我是新的TS。有人能帮我吗?
请查找以下代码:
1.基础实体
import { Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity()
export class BaseModel {
@PrimaryGeneratedColumn("uuid")
id: string;
}
1.审计实体
import { CreateDateColumn, DeleteDateColumn, Entity, UpdateDateColumn } from "typeorm";
@Entity()
export class AuditModel {
@CreateDateColumn()
created!: Date;
@UpdateDateColumn()
updated!: Date;
@DeleteDateColumn()
deletedAt?: Date;
}
3.用户实体
import { AuditModel } from 'src/baseModels/auditEntity';
import { BaseModel } from 'src/baseModels/baseEntity';
import {
Entity,
Column
} from 'typeorm';
@Entity()
export class Users extends BaseModel,AuditModel {
@Column({ unique: true })
email: string;
@Column({ nullable: false })
name: string;
@Column({default:false})
isActive:boolean
@Column({ select: false })
password: string;
}
2条答案
按热度按时间fnvucqvd1#
与其他语言不同,JavaScript不允许扩展多个类(单继承)。
我建议让您的AuditModel扩展BaseModel:
然后,您的用户模型只需扩展AuditModel:
不要对不在数据库中的类使用@Entity!
frebpwbc2#
这是Typescript中的一个限制。你不能扩展一个以上的类,主要原因是如果你调用
super.property
,你调用的是哪个super
?你可以创建某种mixin,它可以接受任意数量的类,并将它们应用到你当前构建的类的原型中,但这可能会导致不必要的复杂,而收效甚微