imbacc / fast-fastify

fastify框架,封装架构,便捷开发。
1 stars 0 forks source link

类型优化 #13

Open wuhao1477 opened 1 day ago

wuhao1477 commented 1 day ago

添加一个BaseType使得可以少些一次xxxTarget_DTYPE类型

// types/global.d.ts
import type { FastifyRequest } from 'fastify/types/request'

// 这里是新添加的 BaseType 类型
+export type BaseType<T> = {
+  [K in keyof T]: T[K] extends { type: infer U }
+    ? U extends 'string'
+      ? string
+      : U extends 'number' | 'integer'
+        ? number
+        : any
+    : any
+}

export type request_DTYPE<T, Y = any> = FastifyRequest<{
+  Body: BaseType<T>
-   Body: T
+  Querystring: BaseType<T>
-   Querystring: T
+  Params: BaseType<T>
-  Params: T
  Headers: Y
}>

使用

{
url: '/findAll',
method: 'GET',
swagger: {
  summary: '查询所有数据',
  description: '查询所有数据description!',
},
+ handler: async (request: request_DTYPE<testInfo_DTYPE>, reply) => {
- handler: async (request: request_DTYPE<`testInfoTarget_DTYPE`>, reply) => {
    const res = await prisma.test_info.findMany()
    reply.send(resultful('SUCCESS', res))
  },
}
wuhao1477 commented 1 day ago

不知道作者支不支持PR就没有贸然发了