All quizzesHard
Advanced Type Engineering
Preview — 3 of 10 questions
What is the result of IsString<number>?
javascript
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // ?
type B = IsString<number>; // ?
type C = IsString<"hello">; // ?AA = true, B = true, C = false
BAll three are boolean
CA = string, B = number, C = "hello"
DA = true, B = false, C = true
What does infer do in conditional types?
javascript
type UnpackPromise<T> = T extends Promise<infer U> ? U : T;
type A = UnpackPromise<Promise<string>>; // ?
type B = UnpackPromise<number>; // ?AA = Promise<string>, B = number
BA = string, B = never
CA = string, B = number
DA = unknown, B = number
What is the result of D?
javascript
type Nullable<T> = T extends any ? T | null : never;
type D = Nullable<string | number>;Astring | number | null
B(string | null) | (number | null) — which simplifies to string | number | null
Cnull
D(string | number) | null — same as A but different distribution
Sign up free to play
Answer all 10 questions (7 more), see explanations for every answer, and track your score.