Estou tentando escrever um tipo genérico Typescript que pode ser usado da seguinte maneira:
/* All properties are nullable */
type A = {
a: string | null,
b: string | null;
}
type G_A = MyType<A>; // A | undefined
/* At least one property is not nullable */
type B = {
a: string;
b: string | null;
}
type G_B = MyType<B>; // B
Portanto, o objetivo de MyType<T>
é que ele retorne T | undefined
se todas T
as propriedades de 's puderem ser null
, mas se não, ele deve retornar apenas T
.
Estou meio perdido sobre como abordar isso, então não tenho nada que eu tenha tentado para compartilhar.