Bird
Raised Fist0
Typescriptprogramming~5 mins

Re-exporting modules in Typescript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Re-exporting modules
O(n)
Understanding Time Complexity

When we re-export modules in TypeScript, we combine or pass along code from one file to another.

We want to know how the time to process these exports grows as we add more modules.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


// fileA.ts
export const a = 1;

// fileB.ts
export { a } from './fileA';

// fileC.ts
export { a } from './fileB';

// main.ts
import { a } from './fileC';
console.log(a);
    

This code re-exports a constant through multiple files before importing it in the main file.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The module system resolves each re-export step by step.
  • How many times: Once per re-exported module in the chain.
How Execution Grows With Input

Each additional re-export adds one more step to resolve the final import.

Input Size (number of re-exports)Approx. Operations
11 step
1010 steps
100100 steps

Pattern observation: The time grows linearly with the number of re-export steps.

Final Time Complexity

Time Complexity: O(n)

This means the time to resolve imports grows directly with the number of re-exported modules.

Common Mistake

[X] Wrong: "Re-exporting many modules happens instantly, no extra time needed."

[OK] Correct: Each re-export adds a step the system must follow, so more re-exports mean more work.

Interview Connect

Understanding how module re-exports affect time helps you write clear code and reason about build times and performance.

Self-Check

What if we combined all exports into one file instead of re-exporting through many files? How would the time complexity change?

Practice

(1/5)
1. What is the main purpose of re-exporting modules in TypeScript?
easy
A. To organize and simplify imports by sharing exports from one place
B. To create new variables inside a module
C. To run code automatically when a module loads
D. To prevent modules from being imported multiple times

Solution

  1. Step 1: Understand re-exporting concept

    Re-exporting means exporting items from one module through another to simplify imports.
  2. Step 2: Identify the main benefit

    This helps organize code and makes importing easier by centralizing exports.
  3. Final Answer:

    To organize and simplify imports by sharing exports from one place -> Option A
  4. Quick Check:

    Re-exporting = Simplify imports [OK]
Hint: Re-exporting centralizes exports for easier imports [OK]
Common Mistakes:
  • Thinking re-exporting creates new variables
  • Confusing re-exporting with running code
  • Believing it prevents multiple imports
2. Which of the following is the correct syntax to re-export everything from a module named utils.ts?
easy
A. export all from './utils';
B. export * from './utils';
C. import * from './utils';
D. re-export * from './utils';

Solution

  1. Step 1: Recall correct re-export syntax

    To re-export all exports from a module, use export * from 'module';.
  2. Step 2: Match syntax with options

    export * from './utils'; matches the correct syntax exactly.
  3. Final Answer:

    export * from './utils'; -> Option B
  4. Quick Check:

    Re-export all = export * from [OK]
Hint: Use 'export * from' to re-export all [OK]
Common Mistakes:
  • Using 'import * from' instead of 'export * from'
  • Writing 'export all from' which is invalid
  • Using 're-export' keyword which doesn't exist
3. Given the following files, what will be the output of console.log in main.ts?
// mathUtils.ts
export const pi = 3.14;
export const e = 2.71;

// index.ts
export { pi } from './mathUtils';

// main.ts
import { pi, e } from './index';
console.log(pi, e);
medium
A. 3.14 2.71
B. 3.14 undefined
C. undefined 2.71
D. Error: 'e' is not exported from './index'

Solution

  1. Step 1: Analyze exports in index.ts

    Only pi is re-exported from mathUtils.ts. e is not exported.
  2. Step 2: Check import in main.ts

    Trying to import both pi and e from index.ts causes an error because e is missing.
  3. Final Answer:

    Error: 'e' is not exported from './index' -> Option D
  4. Quick Check:

    Missing export causes import error [OK]
Hint: Only re-exported items can be imported [OK]
Common Mistakes:
  • Assuming all original exports are re-exported
  • Expecting undefined instead of error
  • Ignoring missing export errors
4. Identify the error in this re-exporting code snippet:
// helpers.ts
export function greet() { return 'Hello'; }

// index.ts
export { greet } from './helpers';
export { greet } from './helpers';
medium
A. Duplicate export of 'greet' causes a syntax error
B. Missing semicolon after export statements
C. Cannot re-export functions, only variables
D. No error, code works fine

Solution

  1. Step 1: Check for duplicate exports

    The code exports greet twice from the same module, causing a duplicate export.
  2. Step 2: Understand TypeScript rules

    Duplicate exports of the same name cause syntax errors because they conflict.
  3. Final Answer:

    Duplicate export of 'greet' causes a syntax error -> Option A
  4. Quick Check:

    Duplicate exports = syntax error [OK]
Hint: Avoid exporting same name twice in one module [OK]
Common Mistakes:
  • Ignoring duplicate export errors
  • Thinking missing semicolons cause error
  • Believing functions can't be re-exported
5. You have two modules: colors.ts exporting red and blue, and shapes.ts exporting circle and square. How can you create a single index.ts that re-exports only red and circle with new names primaryRed and roundShape?
hard
A. import { red, circle } from './colors'; export { red as primaryRed, circle as roundShape };
B. export * from './colors'; export * from './shapes';
C. export { red as primaryRed } from './colors'; export { circle as roundShape } from './shapes';
D. export { primaryRed, roundShape } from './colors', './shapes';

Solution

  1. Step 1: Understand renaming during re-export

    You can rename exports using export { originalName as newName } syntax.
  2. Step 2: Apply to given modules

    Re-export red as primaryRed from colors.ts and circle as roundShape from shapes.ts.
  3. Final Answer:

    export { red as primaryRed } from './colors'; export { circle as roundShape } from './shapes'; -> Option C
  4. Quick Check:

    Rename exports with 'as' keyword [OK]
Hint: Use 'export { oldName as newName }' to rename exports [OK]
Common Mistakes:
  • Using import instead of export for re-exporting
  • Trying to export multiple modules in one statement incorrectly
  • Not renaming exports properly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard