请教大家一个 Nodejs 中 typescript 前后端开发(react+nestjs),共用 interface 的问题
请教大家一个 Nodejs 中 typescript 前后端开发(react+nestjs),共用 interface 的问题
小白最近研究了下 nestjs 的 crud ,输入通过 class-validator 装饰器标注的 dto ,输出是直接透传 typeorm crud 返回的值,全程没有用到过 ts interface ,这种情况如果需要同步开发一个 ts-react 前端,该怎么在 service 文件夹定义 interface 呢,总不能手写一个吧
想到的办法: nest cli 的 swagger plugin ,可以直接生成接口数据,然后前端再通过 swagger-typescript-api 转成 interface ,但似乎完全没有发挥 ts 全栈开发优势啊。
可以先定义好接口,比如 openapi 这套,然后定义文件生成 interface
dto 不也是个类型吗, 能不能直接拿来用
you 相关的库的的,在 npm 找一下。他的原理是用 entity 来生产相关的 dto
这个怎么生成,有什么插件或者工具么?
有终端工具的,你搜下,一大堆,选个合适的就行
在 Node.js 中使用 TypeScript 进行前后端开发(React + NestJS),共用 interface 是一个常见的需求,这有助于确保前后端数据结构的一致性。以下是如何实现这一点的简要指南:
-
创建共享目录: 在你的项目根目录下创建一个
shared
目录,用于存放共用的 TypeScript 接口文件。mkdir shared touch shared/interfaces.ts
-
定义接口: 在
shared/interfaces.ts
中定义你的接口。// shared/interfaces.ts export interface User { id: string; name: string; email: string; }
-
在前端使用接口: 在 React 项目中,你可以通过相对路径或者配置 TypeScript 路径别名来引用这个接口。
// React component import { User } from '../path/to/shared/interfaces'; const user: User = { id: '1', name: 'John Doe', email: 'john@example.com' };
-
在后端使用接口: 在 NestJS 项目中,同样可以引用这个接口。
// NestJS service import { Injectable } from '[@nestjs](/user/nestjs)/common'; import { User } from '../../path/to/shared/interfaces'; [@Injectable](/user/Injectable)() export class UserService { private readonly users: User[] = []; getUserById(id: string): User { return this.users.find(user => user.id === id); } }
通过这种方式,你可以确保前后端使用相同的接口定义,从而减少因数据结构不一致导致的错误。