typescript 用未定义的类型替换null

hl0ma9xz  于 2023-02-25  发布在  TypeScript
关注(0)|答案(1)|浏览(133)

使用情形如下
我有

type A = {
   a: number | undefined
   b: string
}

// I want a helper type that will make so that the result is

type B = {
   a: number| null
   b: string
}
type A = {
   a: number | null
   b: string
}

// I want a helper type that will make so that the result is

type B = {
   a: number| undefined
   b: string
}

这是怎么实现的呢?我试着在网上找一些东西,但是我只得到了javascript的东西。它不应该添加null,只是用null替换undefined。另一个助手类型可以做相反的事情吗?

bxjv4tth

bxjv4tth1#

您可以使用Map类型来Map所有属性,并应用条件类型将undefined替换为null。您还需要从属性中删除可选性(可选性意味着与undefined的并集)

type ReplaceUndefinedWithNull<T> = T extends undefined? null : T;
type ToNullProps<T> = {
  [P in keyof T]-?: ReplaceUndefinedWithNull<T[P]>
}

要以另一种方式翻转类型,我们可以创建一个类似的类型:

type ReplaceNullWithUndefined<T> = T extends null? undefined: T;
type ToUndefinedProps<T> = {
  [P in keyof T]: ReplaceNullWithUndefined<T[P]>
}

Playground链接

相关问题