A namespace import collects several named exports under one object-like name.

namespace import `import * as moduleName` gives code one namespace object for a module's named exports.

Namespace Import Shape

operation
namespace_shape.ts
Replay: real traced execution (multi-file project)
export function sum(values: number[]): number {
    return values.reduce((total, value) => total + value, 0);
}

export function max(values: number[]): number {
    return Math.max(...values);
}

const numbersModule = { sum, max };
const operation: string = "sum";
const values: number[] = [3, 4];
const result: number = operation === "sum"
    ? numbersModule.sum(values)
    : numbersModule.max(values);

console.log(`${operation}=${result}`);
export function sum(values: number[]): number {
    return values.reduce((total, value) => total + value, 0);
}

export function max(values: number[]): number {
    return Math.max(...values);
}

const numbersModule = { sum, max };
const operation: string = "max";
const values: number[] = [3, 4];
const result: number = operation === "sum"
    ? numbersModule.sum(values)
    : numbersModule.max(values);

console.log(`${operation}=${result}`);
  1. numbersModule ← [object Object], operation ← sum, values ← 3,4

    6    return Math.max(...values);7}89const numbersModule→ [object Object] = { sum, max };10const operation→ sum: string = "sum";  //@operation="max"11const values→ 3,4: number[] = [3, 4];12const result: number = operation === "sum"13    ? numbersModule[object Object].sum(values3,4)14    : numbersModule[object Object].max(values3,4);
  2. export function sum(values: number[]): number

    1export function sum(values3,4: number[]): number {2    return values3,4.reduce((total, value) => total + value, 0);3}
  3. result ← 7, operation ← sum

    10const operation: string = "sum";  //@operation="max"11const values: number[] = [3, 4];12const result→ 7: number = operation→ sum === "sum"13    ? numbersModule[object Object].sum(values3,4)14    : numbersModule[object Object].max(values3,4);1516console.log(`${operationsum}=${result7}`);
    outputsum=7
  1. numbersModule ← [object Object], operation ← max, values ← 3,4

    6    return Math.max(...values);7}89const numbersModule→ [object Object] = { sum, max };10const operation→ max: string = "max";11const values→ 3,4: number[] = [3, 4];12const result: number = operation === "sum"13    ? numbersModule[object Object].sum(values3,4)14    : numbersModule[object Object].max(values3,4);
  2. export function max(values: number[]): number

    2    return values.reduce((total, value) => total + value, 0);3}45export function max(values3,4: number[]): number {6    return Math.max(...values3,4);7}
  3. result ← 4, operation ← max

    10const operation: string = "max";11const values: number[] = [3, 4];12const result→ 4: number = operation→ max === "sum"13    ? numbersModule[object Object].sum(values3,4)14    : numbersModule[object Object].max(values3,4);1516console.log(`${operationmax}=${result4}`);
    outputmax=4