Skip to content

Functions#

Basic function#

function add(x: number, y: number): number {
  return x + y;
}

Arrow function#

const multiply = (x: number, y: number): number => {
  return x * y;
};

Optional parameters#

function buildName(first: string, last?: string): string {
  if (last) return `${first} ${last}`;
  return first;
}

Default parameters#

function createUser(name: string, role: string = "user") {
  // ...
}

Rest parameters#

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

Function overload definitions#

function getValue(id: number): string;
function getValue(name: string): number;
function getValue(idOrName: number | string): string | number {
  // Implementation
}

Function type expression#

type MathOp = (x: number, y: number) => number;
const add: MathOp = (x, y) => x + y;

Async function#

async function fetchUser(id: string): Promise<User> {
  const res = await fetch(`/api/users/${id}`);
  return res.json();
}

Generic function#

function identity<T>(arg: T): T {
  return arg;
}

Type guard (predicate)#

function isString(val: unknown): val is string {
  return typeof val === "string";
}