📘 TypeScript

TypeScript Functions and Type Signatures

Typed Function Parameters

function add(a: number, b: number): number {
    return a + b;
}

const greet = (name: string): string => {
    return `Hello, ${name}!`;
};

// Implicit return type (inferred)
const square = (x: number) => x * x;

Optional and Default Parameters

function greet(name: string, greeting?: string): string {
    return `${greeting ?? "Hello"}, ${name}!`;
}
console.log(greet("Alice"));           // Hello, Alice!
console.log(greet("Bob", "Hi"));       // Hi, Bob!

function createUser(name: string, role: string = "user") {
    return { name, role };
}

Function Types

type MathOp = (a: number, b: number) => number;

const add: MathOp = (a, b) => a + b;
const multiply: MathOp = (a, b) => a * b;

function applyOp(a: number, b: number, op: MathOp): number {
    return op(a, b);
}
console.log(applyOp(3, 4, multiply));  // 12

Rest Parameters

function sum(...numbers: number[]): number {
    return numbers.reduce((acc, n) => acc + n, 0);
}
console.log(sum(1, 2, 3, 4, 5));  // 15

Generic Functions

function identity(value: T): T {
    return value;
}

function first(arr: T[]): T | undefined {
    return arr[0];
}

console.log(identity("hello"));  // hello
console.log(first([10, 20, 30]));        // 10
console.log(first(["a", "b", "c"]));     // a