0

所以我将 Prisma orm 连接到 Graphql Nexus 并且需要转换为 T | 的 graphql args 空 | 未定义到 T | Prisma 接受的 undefined 。

这是在 Nexus 中的操作方式https://github.com/graphql-nexus/nexus-plugin-prisma/blob/6c8801c6e1d99bfdb73a7c1c89db9607712b0e01/src/null.ts

这如何适应我的需要?

4

1 回答 1

0

你可以做这样的事情

const isPlainObject = (value: unknown): value is PlainObj =>
  typeof value === "object" && value !== null && !Array.isArray(value);

export type DeNullify<T> = T extends null
  ? undefined
  : T extends { [key: string]: any }
  ? { [K in keyof T]: DeNullify<T[K]> }
  : T;

export const deNullify = <T>(src: T): DeNullify<T> => {
  if (src === null) return undefined as DeNullify<T>;
  if (isPlainObject(src)) {
    const obj = Object.create(null);
    for (const [key, value] of Object.entries(src)) {
      obj[key] = deNullify(value);
    }
    return obj;
  }
  return src;
};

const obj = deNullify({ a: 1, b: 2, c: undefined, d: null }) // { a: 1, b: 2, c: undefined, d: undefined }

更新:我最终将它发布到 NPM。你可以安装它npm install dnull

于 2022-01-09T13:06:37.743 回答