Bird
Raised Fist0
Typescriptprogramming~5 mins

Default exports vs named exports in Typescript - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a default export in TypeScript?
A default export is a single value or entity that a module exports as its main thing. When importing, you can name it anything you want.
Click to reveal answer
beginner
How do you import a default export?
You import a default export using the syntax: <code>import anyName from './module'</code>. The name can be anything you choose.
Click to reveal answer
beginner
What are named exports?
Named exports allow a module to export multiple values by name. When importing, you must use the exact exported names inside curly braces.
Click to reveal answer
beginner
How do you import named exports?
You import named exports using the syntax: <code>import { name1, name2 } from './module'</code>. The names must match exactly.
Click to reveal answer
intermediate
Can a module have both default and named exports?
Yes, a module can have one default export and multiple named exports at the same time.
Click to reveal answer
Which syntax imports a default export from a module?
Aimport * as myThing from './module'
Bimport { myThing } from './module'
Cexport default myThing
Dimport myThing from './module'
How do you import a named export called 'foo'?
Aimport { foo } from './module'
Bimport foo from './module'
Cimport * as foo from './module'
Dexport default foo
Can you rename a default import when importing?
AYes, you can name it anything you want
BNo, you must use the original name
COnly if you use 'as' keyword
DOnly if the module exports multiple defaults
Which statement is true about named exports?
AYou can only have one named export per module
BNamed exports must be imported with the exact exported names
CNamed exports are imported without curly braces
DNamed exports cannot be combined with default exports
Is this valid? export default function() {} and export const foo = 5; in the same file?
ANo, you cannot mix default and named exports
BOnly if you use 'export * from' syntax
CYes, you can have one default and multiple named exports
DOnly if you rename the default export
Explain the difference between default exports and named exports in TypeScript.
Think about how you import and name things from a module.
You got /4 concepts.
    Describe how you would import both a default export and named exports from the same module.
    Remember the syntax differences for default and named imports.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between default export and named exports in TypeScript?
      easy
      A. Default export requires curly braces when importing, named exports do not.
      B. Default export allows exporting one main value per file, named exports allow multiple exports by name.
      C. Named exports can only export functions, default exports can only export objects.
      D. Default exports are deprecated in TypeScript, named exports are preferred.

      Solution

      1. Step 1: Understand default export purpose

        Default export is designed to export a single main value from a file, like a main function or class.
      2. Step 2: Understand named exports purpose

        Named exports allow exporting multiple values by their names, so you can import only what you need.
      3. Final Answer:

        Default export allows exporting one main value per file, named exports allow multiple exports by name. -> Option B
      4. Quick Check:

        Default export = one main, Named exports = multiple [OK]
      Hint: Default = one main export, named = many exports by name [OK]
      Common Mistakes:
      • Confusing import syntax for default and named exports
      • Thinking default export can export multiple items
      • Assuming named exports require default keyword
      2. Which of the following is the correct syntax to import a default export from a module named utils.ts?
      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: Recall default import syntax

        Default exports are imported without curly braces using the syntax: import name from 'module'.
      2. Step 2: Check options for correct syntax

        import utils from './utils'; matches this syntax exactly, importing the default export as utils.
      3. Final Answer:

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

        Default import has no braces [OK]
      Hint: Default imports have no curly braces [OK]
      Common Mistakes:
      • Using curly braces for default imports
      • Confusing import * as with default import
      • Using require syntax in ES modules
      3. Given the following module mathUtils.ts:
      export default function add(a: number, b: number) { return a + b; }
      export function multiply(a: number, b: number) { return a * b; }
      What will be the output of this code?
      import add, { multiply } from './mathUtils';
      console.log(add(2, 3));
      console.log(multiply(2, 3));
      medium
      A. NaN and 6
      B. Syntax error
      C. 5 and undefined
      D. 5 and 6

      Solution

      1. Step 1: Understand import statements

        The default export function add is imported without braces, and the named export multiply is imported with braces.
      2. Step 2: Evaluate function calls

        add(2, 3) returns 5, and multiply(2, 3) returns 6, so console logs 5 and 6.
      3. Final Answer:

        5 and 6 -> Option D
      4. Quick Check:

        Default + named import works = 5 and 6 [OK]
      Hint: Default import no braces, named import with braces [OK]
      Common Mistakes:
      • Importing default export with braces
      • Calling undefined functions due to wrong import
      • Confusing output values
      4. Consider this code snippet:
      export default function greet() { return 'Hello'; }
      export function greet() { return 'Hi'; }
      What is the problem here?
      medium
      A. There is no problem; this code works fine.
      B. Default export must be a variable, not a function.
      C. You cannot have two functions with the same name exported, even if one is default.
      D. Named exports cannot be functions.

      Solution

      1. Step 1: Identify duplicate function names

        Both the default export and named export use the same function name greet, which causes a conflict.
      2. Step 2: Understand export rules

        Exports must have unique names; default export can be anonymous or named but cannot clash with named exports.
      3. Final Answer:

        You cannot have two functions with the same name exported, even if one is default. -> Option C
      4. Quick Check:

        Duplicate export names cause error [OK]
      Hint: Default and named exports cannot share the same name [OK]
      Common Mistakes:
      • Assuming default export must be anonymous
      • Thinking named exports can't be functions
      • Ignoring duplicate export names
      5. You have a file shapes.ts exporting multiple shapes and a default export for the main shape:
      export interface Circle { radius: number; }
      export interface Square { side: number; }
      const defaultShape = { type: 'circle', radius: 5 };
      export default defaultShape;
      How would you import both the default shape and the Square interface correctly in another file?
      hard
      A. import defaultShape, { Square } from './shapes';
      B. import { defaultShape, Square } from './shapes';
      C. import { defaultShape } from './shapes'; import Square from './shapes';
      D. import * as shapes from './shapes';

      Solution

      1. Step 1: Import default export without braces

        The default export defaultShape is imported without curly braces.
      2. Step 2: Import named export with braces

        The named export Square interface is imported with curly braces.
      3. Final Answer:

        import defaultShape, { Square } from './shapes'; -> Option A
      4. Quick Check:

        Default no braces, named with braces [OK]
      Hint: Default import no braces, named imports with braces [OK]
      Common Mistakes:
      • Using braces for default import
      • Trying to import default as named
      • Confusing import * as with default import
      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