javascript - ¿Cómo comprobar si el tipo es undefined en los tipos condicionales de Typescript?
Actualmente tengo este tipo:
type ReturnType<T, E> = [T, E]
Estoy intentando hacer que este tipo sea "más inteligente" siguiendo estas reglas:
- Si
Tesundefined, entonces el tipo sería[undefined, E] - Si
Eesundefined, entonces el tipo sería[T] TyEno pueden ambos serundefined
Estoy intentando aplicar estas reglas usando los Tipos Condicionales de Typescript.
¿Es siquiera posible implementar esto?
Esto es lo que tengo hasta ahora:
type ReturnType<T, E> =
T extends undefined
? E extends undefined ? never : [undefined, E]
: E extends undefined ? [T] : never
Respuesta #1
Lo que parece que te está faltando es que puedes hacer pruebas tanto para T como para E al mismo tiempo con:
[T, E] extends [TypeA, TypeB] ? ... : ...
Poniendo eso en práctica puedes hacer:
type MyReturnType<T, E> =
[T, E] extends [undefined, undefined] ? never
: T extends undefined ? [undefined, E]
: E extends undefined ? [T]
: [T, E]
type A = MyReturnType<undefined, undefined> // never
type B = MyReturnType<string, undefined> // [string]
type C = MyReturnType<undefined, number> // [undefined, number]
type D = MyReturnType<boolean, string> // [boolean, string]
Parque infantil
