gpt4 book ai didi

javascript - 如何忽略 TypeScript 装饰器(像通常类型一样使用 NestJS 实体)?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:41 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以忽略 TypeScript 装饰器并在没有它们的情况下重用同一个文件。在 NestJS 中,我定义了这样一个实体。

import { PrimaryGeneratedColumn, Column, Entity } from 'typeorm';

@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;

@Column({ length: 100 })
name: string;

@Column({ length: 320 })
email: string;
}

但是除了数据库 typeorm 配置之外的任何地方我都需要完全相同的类型,只是没有装饰器。

export class User {
id: number;
name: string;
email: string;
}

重新定义类型会使代码容易出错,并且无视不要重复自己 原则。这可能是不言自明的,但我还没有看到。我可以像往常一样使用第一个吗(例如 let user: User;?感谢您的帮助。

最佳答案

你可以只使用你的实体作为类型,你甚至可以添加其他注释,例如class-validator 对其进行断言。只要不涉及 typeorm(resp. class-validator),装饰器就会被忽略。

请注意,尽管在整个应用程序中重复使用数据库模式会产生依赖性,并使更改数据库模式变得更加困难(例如为了性能优化)。特别是在较大的应用程序中,使用适配器层将 API 模式(易于使用,更接近现实世界的实体)和数据库模式(更具技术性,例如关系、技术细节)分开是有意义的。它基本上是 DRY 和封装之间的权衡,请参见 thread进行更深入的讨论。

关于javascript - 如何忽略 TypeScript 装饰器(像通常类型一样使用 NestJS 实体)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com