What does `BoxCtor` represent, and which expression below is therefore valid?
class Box {
value = 0;
static make() { return new Box(); }
}
type BoxCtor = typeof Box;Read the full question →Every question is hand-checked, every answer comes with an explanation, and your progress builds into a clear picture of where you stand.
Every TypeScript question shows its code before you answer, so you are reading real TypeScript, not a description of it.
Once you attempt a question you get the reasoning, not just a tick. That matters most on TypeScript, where expect inference puzzles: conditional types, mapped types, variance on function parameters, and when a union distributes.
Progress is tracked per topic across the 44 TypeScript topics, so revision points at the gaps instead of the whole list.
606 TypeScript questions right now: 125 easy, 219 medium and 262 hard. That number is read straight from the question table when this page is built, so it is never a rounded marketing figure.
No. Every TypeScript question, including its code snippet, its difficulty and its topic, is readable without signing in. You need a free account only to submit an answer, see which option is correct, and read the worked explanation. We keep it that way so the platform stays honest about what you actually got right.
Expect inference puzzles: conditional types, mapped types, variance on function parameters, and when a union distributes. A large share of questions are literally 'what is the inferred type here'.
44 distinct topics are tagged on the TypeScript questions, including type annotations, hand-rolled utility types, primitive types, ESM CJS interop, conditional-type distribution, control-flow analysis pitfalls. The topic labels come from the questions themselves, so the list matches what you will actually be asked.
Yes. Reading is free and unlimited. A free account unlocks answering, explanations and progress tracking. Pro (₹199 per month) adds AI explanations and AI-graded guesstimates on top; it is not needed to practise TypeScript MCQs.
Product engineering teams that outgrew plain JavaScript, design-system work, and any codebase large enough to need refactor safety.
These are 12 of the 606 TypeScript questions in the library, pulled live from the question table. The snippet, the difficulty and the topic are all here. The answer options and the explanation are not. Those need a free account.
Expect inference puzzles: conditional types, mapped types, variance on function parameters, and when a union distributes. A large share of questions are literally 'what is the inferred type here'.
class Box {
value = 0;
static make() { return new Box(); }
}
type BoxCtor = typeof Box;Read the full question →const arr: number[] = [1,2,3];\nconst x = arr[0]; // with noUncheckedIndexedAccessRead the full question →type X = `${Capitalize<"foo">}Bar`;Read the full question →type X = string & number;Read the full question →const f = (x: number) => x + 1;Read the full question →let x = 5;Read the full question →type X = Exclude<"a"|"b","a"|"b">;Read the full question →type ToArray<T> = T extends unknown ? T[] : never;
type R = ToArray<string | never>;Read the full question →function distance(point: { x: number; y: number }): number {
return Math.sqrt(point.x ** 2 + point.y ** 2);
}Read the full question →type Result = keyof ({ a: 1; b: 2 } | { b: 3; c: 4 });Read the full question →const arr = ["a", "b"] as const;\ntype X = typeof arr[number];Read the full question →interface Animal { type: string }
interface Dog extends Animal { type: "dog"; bark(): void }
function isDog(a: Animal): a is Dog { return a.type === "dog"; }
function looksDog(a: Animal): boolean { return a.type === "dog"; }
declare const an2: Animal;
if (looksDog(an2)) {
an2.bark();
}Read the full question →We keep the correct answer, the explanation and the scoring behind sign-in so the platform stays honest, which is why the correct option and the worked explanation for every TypeScript question stay behind a free account. Signing in is free and takes a few seconds.
Product engineering teams that outgrew plain JavaScript, design-system work, and any codebase large enough to need refactor safety.