Как я могу игнорировать декораторы TypeScript (использовать сущности NestJS как обычные типы)? - PullRequest
2 голосов
/ 03 апреля 2019

Я хотел знать, есть ли способ игнорировать декораторы 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;? Спасибо за вашу помощь.

1 Ответ

1 голос
/ 03 апреля 2019

Вы можете просто использовать свою сущность как тип, вы можете даже добавить другие аннотации, например, class-validator утверждений к нему. Пока typeorm (соответственно class-validator) не задействован, декораторы будут просто игнорироваться.

Обратите внимание, что повторное использование схемы базы данных во всем приложении создает зависимости и затрудняет изменение схемы базы данных (например, для оптимизации производительности). Особенно в больших приложениях имеет смысл разделить схему API (простую в использовании, ближе к сущностям реального мира) и схему базы данных (более техническую, например, отношения, технические подробности) с уровнем адаптера. Это в основном компромисс между СУХОЙ и инкапсуляцией, для подробного обсуждения см. Этот поток .

...