如何在Typel的Anglular和NodeJs服务器中正确使用相同的类

时间:2019-03-11 04:01:09

标签: node.js angular typescript

我有以下名为models.ts的文件

import {BusStage} from "./busStage";

export class BusRoute {
    name: string;
    origin_direction_1: string;
    origin_direction_2: string;
    stops: number;
    id: string;
    meta: object;
    path: Direction;
    prev: string;
    next: string;
    arrival: Arrival;
}
export class Arrival {
    busstop_id: string;
    busstop_name: string;
    arrival_in: string;
    bus_left: string;
    all_arrivals: ArrivalSchedule[];
}
export class ArrivalSchedule{
    minutesLeft: string;
    arrivalTime: string;
    arrivalStatus:string;
}
export class Direction {
    direction1: BusStage[];
    direction2: BusStage[];
    direction3: BusStage[];
}

我的后端是支持Typescript的NodeJ,它为我的前端Angular提供静态文件。我的服务器还公开了一个API,该API允许两端交流json请求和响应。现在,我想在前端和后端都使用相同的models.ts文件,而不必重复文件并在每次进行更改时手动进行同步。

正确的方法是什么?我正在考虑编写一个脚本,监视任何文件更改,并在每次更改时将其复制到后端和前端文件夹中。但是,我将其视为解决方法,而不是解决方案。我想实现的目标可能吗?

这是我的文件夹结构:

|models.ts
   |_frontend/
      |_src
      |_package.json
      |_tsconfig.json
      |_...

   |_backend/
      |_src
          |_server.ts
      |_dist/
      |_package.json
      |_tsconfig.json
      |_...

1 个答案:

答案 0 :(得分:0)

  1. 请勿编写任何观察者! :)
  2. 纱线工作区可为您提供帮助。
  3. 使根项目具有JSON包,仅用于指定工作区。
  4. 将后端和前端放在单独的文件夹中。
  5. 在根级别中放入tsconfig.base(或类似的东西),同时向其添加"baseUrl": ".",,这将使您可以在顶层使用一个提升的node_modules,所有模块都将得到正确解析。 / li>
  6. 创建文件夹,例如libstypes并将其添加到工作区中。
  7. 在顶级文件夹类型或某些嵌套文件夹(如@ your-project / types)中创建一个包
  8. 将此软件包添加到前端和后端的开发部门。
  9. 现在,您可以在前端/后端之间使用类型,接口或类,并且可以一直保持同步,而无需任何费用。

我希望这是您想要的。