Skip to content

Functions in TypeScript

function add(a: number, b: number): number {
return a + b;
}
  • a: number, b: number are parameter types.
  • : number after ) is the return type.

graph TD A[Input Parameters] --> B[Type Check] B --> C[Function Body] C --> D[Return Value] D --> E[Return Type Check]

function greet(name: string, age?: number): string {
return age ? `${name} (${age})` : name;
}

Rules:

  • Optional parameters use ?
  • Optional parameters should come at the end
  • Internally, age becomes number | undefined

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

Default values avoid undefined handling in many cases.


function sum(...numbers: number[]): number {
return numbers.reduce((acc, n) => acc + n, 0);
}

Rest parameters collect many values into one typed array.


void

Function finishes, but does not return useful data.

never

Function never reaches normal completion.

function logMessage(message: string): void {
console.log(message);
}
function fail(message: string): never {
throw new Error(message);
}

Use never for:

  • thrown errors
  • infinite loops
  • exhaustive checks in unions

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

This pattern is common in callbacks and dependency injection.