S SmartDocs
Series: Typescript typescript 115 lines · Updated 2025-12-27

demo.ts

Typescript/src/demo.ts

// ============================================
// TypeScript Learning Curriculum - Complete Demo
// ============================================

// This file demonstrates all concepts from beginner to advanced

console.log("=== TypeScript Learning Curriculum - Complete Demo ===\n");

// BEGINNER LEVEL
console.log("--- BEGINNER LEVEL ---\n");

// 1. Introduction
import { greet, calculateArea } from "./01-beginner/01-introduction";
console.log("1. Introduction:");
console.log(greet("TypeScript"));
console.log(`Area: ${calculateArea(5, 10)}\n`);

// 2. Basic Types
import { age, name, isActive } from "./01-beginner/02-basic-types";
console.log("2. Basic Types:");
console.log(`Age: ${age}, Name: ${name}, Active: ${isActive}\n`);

// 3. Functions
import { sum, multiply, process } from "./01-beginner/04-functions";
console.log("3. Functions:");
console.log(`Sum: ${sum(1, 2, 3, 4, 5)}`);
console.log(`Multiply: ${multiply(5, 3)}`);
console.log(`Process: ${process("hello")}\n`);

// 4. Classes
import { BankAccount } from "./01-beginner/06-classes";
console.log("4. Classes:");
const account = new BankAccount();
account.deposit(100);
console.log(`Balance: ${account.getBalance()}\n`);

// 5. Arrays and Tuples
import { numbers, getStatus } from "./01-beginner/07-arrays-tuples";
console.log("5. Arrays and Tuples:");
console.log(`Numbers: ${numbers}`);
const [success, message] = getStatus();
console.log(`Status: ${success}, Message: ${message}\n`);

// 6. Enums
import { Direction, Status, Color } from "./01-beginner/08-enums";
console.log("6. Enums:");
console.log(`Direction: ${Direction.Up} (${Direction[Direction.Up]})`);
console.log(`Status: ${Status.Pending}`);
console.log(`Color: ${Color.Red}\n`);

// INTERMEDIATE LEVEL
console.log("--- INTERMEDIATE LEVEL ---\n");

// 7. Generics
import { identity, getFirst, Stack } from "./02-intermediate/01-generics";
console.log("7. Generics:");
console.log(`Identity: ${identity<string>("hello")}`);
console.log(`Get First: ${getFirst([1, 2, 3])}`);
const stack = new Stack<number>();
stack.push(1);
stack.push(2);
console.log(`Stack Pop: ${stack.pop()}\n`);

// 8. Utility Types
import { updateUser } from "./02-intermediate/02-utility-types";
console.log("8. Utility Types:");
const user = { id: 1, name: "Alice", email: "alice@example.com", age: 25 };
const updated = updateUser(user, { age: 26 });
console.log(`Updated User Age: ${updated.age}\n`);

// 9. Type Guards
import { process as processValue, area } from "./02-intermediate/06-type-guards";
console.log("9. Type Guards:");
processValue("hello");
processValue(42);
const circle = { kind: "circle" as const, radius: 5 };
console.log(`Circle Area: ${area(circle)}\n`);

// 10. Error Handling
import { divide } from "./02-intermediate/10-error-handling";
console.log("10. Error Handling:");
const result = divide(10, 2);
if (result.success) {
  console.log(`Division Result: ${result.data}`);
} else {
  console.log(`Error: ${result.error.message}`);
}
console.log();

// ADVANCED LEVEL
console.log("--- ADVANCED LEVEL ---\n");

// 11. Advanced Generics
import { getProperty, setProperty } from "./03-advanced/01-advanced-generics";
console.log("11. Advanced Generics:");
const userObj = { name: "Alice", age: 25 };
console.log(`Get Property: ${getProperty(userObj, "name")}`);
setProperty(userObj, "age", 30);
console.log(`Updated Age: ${userObj.age}\n`);

// 12. Template Literal Types
import { handleRoute } from "./03-advanced/04-template-literal-types";
console.log("12. Template Literal Types:");
handleRoute("GET /users");
console.log();

// 13. Branded Types
import { getUser, createEmail } from "./03-advanced/10-branded-types";
console.log("13. Branded Types:");
const userId = "123" as any; // Simplified for demo
const email = createEmail("user@example.com");
console.log(`Email created: ${email}\n`);

console.log("=== Demo Complete ===");

Related articles