typescript 如何规范化打印脚本中的嵌套类型转换?

mzmfm0qo  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(148)

我正在做一个类型转换库。我正在尝试将一个类型转换成另一个类型。
这里举个简单的例子。

interface Struct {
    a: {
        x: number;
        y: number;
    };
    b: string;
}

type OmitDeepX<T> = { [K in keyof T]: Omit<T[K], 'x'> };

export type TransformedStruct1 = OmitDeepX<Struct>;

VSCode输出如下:

虽然类型是正确的,但是作为这个库的用户,我希望看到如下的规范化类型

type TransformedStruct = {
   a: {
       y: number;
   };
   b: string;
}

这也是我在其他项目中多次看到的,例如trpc,zod
但我怎样才能做到呢?

e4yzc0pl

e4yzc0pl1#

只需使用此美化助手 Package 您的类型

type Prettify<T> = T extends object ?  {[K in keyof T]: Prettify<T[K]>} : T

type OmitDeepX<T> = { [K in keyof T]: Omit<T, 'x'> };

type PrettyOmitDeep<T> = Prettify<OmitDeepX<T>>

相关问题