Bird
Raised Fist0
Typescriptprogramming~20 mins

Import syntax variations in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Import Syntax Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this import usage?
Given the following TypeScript module and import statements, what will be the output when running console.log?
Typescript
/* module.ts */
export const value = 42;
export default function greet() { return 'Hello'; }

/* main.ts */
import greet, { value } from './module';
console.log(greet(), value);
ASyntaxError
B"undefined 42"
C"Hello undefined"
D"Hello 42"
Attempts:
2 left
💡 Hint
Default exports can be imported with any name, named exports must match exactly.
❓ Predict Output
intermediate
2:00remaining
What error occurs with this import statement?
Consider this import statement in TypeScript:
import { default as greet } from './module';
where module.ts has a default export function. What happens when you run this?
Typescript
/* module.ts */
export default function greet() { return 'Hi'; }

/* main.ts */
import { default as greet } from './module';
console.log(greet());
ASyntaxError: Unexpected token 'default'
BRuns and prints 'Hi'
CTypeError: greet is not a function
DModule not found error
Attempts:
2 left
💡 Hint
Default exports cannot be imported inside curly braces as 'default'.
❓ Predict Output
advanced
2:00remaining
What is the output of this namespace import?
Given module.ts exports multiple named constants, what does this code print?
import * as mod from './module';
console.log(mod.a, mod.b);
Typescript
/* module.ts */
export const a = 1;
export const b = 2;

/* main.ts */
import * as mod from './module';
console.log(mod.a, mod.b);
ASyntaxError
Bundefined undefined
C1 2
DTypeError: mod.a is not a function
Attempts:
2 left
💡 Hint
Namespace import collects all named exports as properties.
❓ Predict Output
advanced
2:00remaining
What is the output when importing a type only?
Given this code, what will be printed?
import type { User } from './types';
const user: User = { name: 'Alice' };
console.log(typeof user);
Typescript
/* types.ts */
export interface User { name: string; }

/* main.ts */
import type { User } from './types';
const user: User = { name: 'Alice' };
console.log(typeof user);
A"object"
BTypeError
C"undefined"
D"User"
Attempts:
2 left
💡 Hint
Type imports are erased at runtime, so user is a normal object.
🧠 Conceptual
expert
2:00remaining
Which import syntax correctly imports a default export and renames it?
You have a module with a default export function. Which import statement correctly imports it and renames it to myFunc?
Aimport { default as myFunc } from './module';
Bimport myFunc from './module';
Cimport * as myFunc from './module';
Dimport { myFunc } from './module';
Attempts:
2 left
💡 Hint
Default exports are imported without curly braces and can be renamed by the import name.

Practice

(1/5)
1. Which import syntax correctly imports the default export from a module named utils?
easy
A. import utils from './utils';
B. import { utils } from './utils';
C. import * as utils from './utils';
D. import utils = require('./utils');

Solution

  1. Step 1: Understand default export import syntax

    The default export is imported without curly braces using import name from 'module'.
  2. Step 2: Analyze each option

    import utils from './utils'; uses the correct syntax for default import. import { utils } from './utils'; uses curly braces which is for named exports. import * as utils from './utils'; imports everything as an object, not default. import utils = require('./utils'); is CommonJS style, not ES module syntax.
  3. Final Answer:

    import utils from './utils'; -> Option A
  4. Quick Check:

    Default import = import name from 'module' [OK]
Hint: Default imports have no braces, named imports do [OK]
Common Mistakes:
  • Using curly braces for default imports
  • Confusing * as import with default import
  • Mixing CommonJS require syntax with ES modules
2. Which of the following is the correct syntax to import only the named export calculate from a module mathUtils?
easy
A. import calculate from './mathUtils';
B. import { calculate } from './mathUtils';
C. import * as calculate from './mathUtils';
D. import calculate = require('./mathUtils');

Solution

  1. Step 1: Identify named export import syntax

    Named exports are imported using curly braces: import { name } from 'module'.
  2. Step 2: Check each option

    import { calculate } from './mathUtils'; correctly imports the named export calculate. import calculate from './mathUtils'; is for default imports. import * as calculate from './mathUtils'; imports all exports as an object, not a single named export. import calculate = require('./mathUtils'); uses CommonJS syntax, not ES modules.
  3. Final Answer:

    import { calculate } from './mathUtils'; -> Option B
  4. Quick Check:

    Named import = import { name } from 'module' [OK]
Hint: Use curly braces for named imports only [OK]
Common Mistakes:
  • Omitting curly braces for named imports
  • Using * as import when only one named export is needed
  • Confusing default and named import syntax
3. Given the following code, what will be the output?
import * as helpers from './helpers';

console.log(typeof helpers);
console.log(typeof helpers.formatDate);

Assume helpers exports a function named formatDate.
medium
A. "object" and "object"
B. "function" and "undefined"
C. "object" and "function"
D. "undefined" and "function"

Solution

  1. Step 1: Understand import * as syntax

    Using import * as helpers imports all exports as an object named helpers.
  2. Step 2: Determine types of helpers and helpers.formatDate

    helpers is an object, so typeof helpers is "object". formatDate is a function exported inside helpers, so typeof helpers.formatDate is "function".
  3. Final Answer:

    "object" and "function" -> Option C
  4. Quick Check:

    import * as = object, function inside = function [OK]
Hint: import * as creates an object with exported members [OK]
Common Mistakes:
  • Thinking import * as imports a function directly
  • Confusing typeof results for functions and objects
  • Assuming default export with import * as syntax
4. Identify the error in this import statement:
import { default as myFunc } from './module';
medium
A. You cannot rename the default import using curly braces.
B. The syntax is correct; no error.
C. You must use import myFunc from './module'; for default imports.
D. Default imports must be imported with * as syntax.

Solution

  1. Step 1: Understand default import syntax

    Default imports are imported without curly braces and can be renamed directly: import myFunc from 'module'.
  2. Step 2: Analyze the given syntax

    The syntax import { default as myFunc } tries to rename the default export inside curly braces, which is invalid in ES module syntax.
  3. Final Answer:

    You cannot rename the default import using curly braces. -> Option A
  4. Quick Check:

    Default import no braces, no rename inside braces [OK]
Hint: Default imports never use curly braces [OK]
Common Mistakes:
  • Trying to rename default import inside curly braces
  • Confusing named export renaming with default import
  • Assuming default import can be destructured
5. You want to import a named export parseData from dataUtils but avoid naming conflicts by renaming it to parse. Which is the correct import statement?
hard
A. import parse from './dataUtils';
B. import { parse as parseData } from './dataUtils';
C. import * as parse from './dataUtils';
D. import { parseData as parse } from './dataUtils';

Solution

  1. Step 1: Understand renaming named imports

    You can rename named imports using import { originalName as newName }.
  2. Step 2: Check each option

    import { parseData as parse } from './dataUtils'; correctly renames parseData to parse. import parse from './dataUtils'; imports default export, not named. import * as parse from './dataUtils'; imports all exports as an object named parse. import { parse as parseData } from './dataUtils'; tries to rename parse to parseData, which is reversed.
  3. Final Answer:

    import { parseData as parse } from './dataUtils'; -> Option D
  4. Quick Check:

    Rename named import with 'as' inside braces [OK]
Hint: Use 'as' inside braces to rename named imports [OK]
Common Mistakes:
  • Using default import syntax for named exports
  • Confusing rename direction in 'as' syntax
  • Using * as when only one function is needed
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