Working with Modules
Namespace Import Shape
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
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}`);
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);export function sum(values: number[]): number
1export function sum(values3,4: number[]): number {2 return values3,4.reduce((total, value) => total + value, 0);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
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);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}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