void
Function finishes, but does not return useful data.
function add(a: number, b: number): number { return a + b;}a: number, b: number are parameter types.: number after ) is the return type.function greet(name: string, age?: number): string { return age ? `${name} (${age})` : name;}Rules:
?age becomes number | undefinedfunction 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:
type MathOp = (a: number, b: number) => number;
const multiply: MathOp = (a, b) => a * b;This pattern is common in callbacks and dependency injection.