Challenge - 5 Problems
Dynamic Import Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
What is the output of this dynamic import with type assertion?
Consider this TypeScript code that dynamically imports a module and uses a type assertion. What will be logged to the console?
Typescript
async function loadModule() { const module = await import('./mathUtils') as { add: (a: number, b: number) => number }; console.log(module.add(2, 3)); } loadModule();
Attempts:
2 left
💡 Hint
Think about what the type assertion does and what the imported module exports.
✗ Incorrect
The dynamic import returns a promise resolving to the module object. The type assertion tells TypeScript the shape of the module, so calling add(2,3) returns 5.
❓ Predict Output
intermediate2:00remaining
What error does this dynamic import with wrong type cause?
What error will this TypeScript code produce at runtime?
Typescript
async function loadModule() { const module = await import('./stringUtils') as { multiply: (a: number, b: number) => number }; console.log(module.multiply(2, 3)); } loadModule();
Attempts:
2 left
💡 Hint
The type assertion does not change the actual module content at runtime.
✗ Incorrect
The module does not export multiply, so calling module.multiply causes a runtime TypeError.
🧠 Conceptual
advanced1:30remaining
Which statement about dynamic imports with types is true?
Choose the correct statement about using dynamic imports with TypeScript types.
Attempts:
2 left
💡 Hint
Think about the difference between compile-time and runtime.
✗ Incorrect
Type assertions only help TypeScript during compilation; they do not change the actual runtime module.
❓ Predict Output
advanced2:00remaining
What is the output of this dynamic import with conditional type?
What will be logged by this TypeScript code using dynamic import and conditional types?
Typescript
type ModuleType<T extends string> = T extends 'math' ? { add: (a: number, b: number) => number } : { greet: (name: string) => string }; async function load<T extends string>(name: T): Promise<ModuleType<T>> { return await import(`./${name}Utils`) as ModuleType<T>; } load('math').then(m => console.log(m.add(1, 2)));
Attempts:
2 left
💡 Hint
Look at how the conditional type selects the module shape.
✗ Incorrect
The conditional type selects the math module type, so add(1,2) returns 3.
🔧 Debug
expert2:30remaining
Why does this dynamic import with typescript fail at runtime?
This code tries to dynamically import a module and use a typed function, but it fails at runtime. Why?
Typescript
async function loadAndRun() { const mod = await import('./utils') as { default: (x: number) => number }; console.log(mod(5)); } loadAndRun();
Attempts:
2 left
💡 Hint
Remember how dynamic imports return module objects with exports as properties.
✗ Incorrect
Dynamic import returns the module object. The default export is a property, so calling mod(5) is invalid.