Utility Type Request: DeepUndefinedToNull
I am working on a TypeScript project where I need to transform a type with optional properties into a type where the optional properties are replaced with union types that include null. For example, I would like to transform this type A:
interface A {
a?: string;
b?: { c?: number };
d: boolean;
}
into this type B:
interface B {
a: string | null;
b: { c: number | null } | null;
d: boolean;
}
Furthermore, I would like this utility type to also support property access, such that the following code:
type C = DeepUndefinedToNull<A["a"]>
returns a type C equivalent to string | null.
Despite extensive efforts and even assistance from OpenAI's GPT model, I've been unable to create a utility type that achieves this. I believe this could be a valuable addition to type-fest and would be useful for many TypeScript developers who need to handle optional properties in this way.
Would you please consider adding such a utility type to type-fest? Thank you for your time and consideration.
Hey @dawidk92 , wanted to let you know that I opened a PR implementing this request. It's a pretty solid implementation IMO, and as a bonus it also handles union types. Definitely open to feedback if you want to give it a go!
https://github.com/sindresorhus/type-fest/pull/648#issuecomment-1703871287