javascript - Hur kontrollerar man om typen är undefined i Typescript villkorliga typer?
Jag har för närvarande den här typen:
type ReturnType<T, E> = [T, E]
Jag försöker göra denna typ “smartare” med dessa regler:
- Om
Tärundefined, skulle typen vara[undefined, E] - Om
Eärundefined, skulle typen vara[T] TochEkan inte båda varaundefined
Jag försöker tillämpa dessa regler med Typescripts Conditional Types.
Är det ens möjligt att implementera detta?
Detta är vad jag har fått hittills:
type ReturnType<T, E> =
T extends undefined
? E extends undefined ? never : [undefined, E]
: E extends undefined ? [T] : never
Svar #1
Det du verkar missa är att du kan göra tester för både T och E samtidigt med:
[T, E] extends [TypeA, TypeB] ? ... : ...
Genom att använda det kan du göra:
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]
Lekplats
