TYPESCRIPT

TypeScript Function: Syntax, Usage, and Examples

A TypeScript function is a reusable block of code that takes input, processes it, and returns an output. Strong typing makes TypeScript functions safer, reducing runtime errors and improving maintainability. Whether you're defining functions, passing them as arguments, or using async/await, TypeScript ensures correctness through its type system.

How to Use Functions in TypeScript

Declaring a Function

To define a function, use the function keyword, followed by a name, parameter types, and a return type.

function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("Alice")); // Output: Hello, Alice!

Assigning Function Types

In TypeScript, you can specify function types explicitly, making it easier to define reusable patterns.

let add: (a: number, b: number) => number;

add = (x, y) => x + y;

console.log(add(5, 10)); // Output: 15

Function Parameters and Default Values

You can assign default values to function parameters, reducing the need for extra conditionals.

function greetUser(name: string = "Guest"): string {
  return `Welcome, ${name}!`;
}

console.log(greetUser()); // Output: Welcome, Guest

Function Return Types

Functions can return different types depending on conditions.

function getResult(value: boolean): string | number {
  return value ? "Success" : 0;
}

When to Use Functions in TypeScript

Reusability

If you find yourself writing the same logic multiple times, a function can simplify your code by keeping it in one place.

function calculateDiscount(price: number, discount: number): number {
  return price - price * (discount / 100);
}

console.log(calculateDiscount(100, 10)); // Output: 90

Encapsulation

Functions help organize code by grouping related logic together.

function getFullName(firstName: string, lastName: string): string {
  return `${firstName} ${lastName}`;
}

Working with Objects

You can define functions within objects to create methods that act on object properties.

const user = {
  name: "Alice",
  greet() {
    return `Hello, ${this.name}!`;
  },
};

console.log(user.greet()); // Output: Hello, Alice!

Examples of Functions in TypeScript

Function Overloading

Function overloading lets you define multiple function signatures with different parameter types.

function getInfo(value: string): string;
function getInfo(value: number): number;
function getInfo(value: string | number): string | number {
  return typeof value === "string" ? `User: ${value}` : value * 2;
}

console.log(getInfo("Alice")); // Output: User: Alice
console.log(getInfo(10)); // Output: 20

Arrow Functions

Arrow functions provide a more concise syntax.

const square = (num: number): number => num * num;
console.log(square(4)); // Output: 16

Async Functions

Async functions handle asynchronous operations using async and await.

async function fetchData(url: string): Promise<string> {
  const response = await fetch(url);
  return response.text();
}

Passing Functions as Parameters

A function can be passed as an argument to another function.

function execute(callback: (message: string) => void) {
  callback("Task completed!");
}

execute((msg) => console.log(msg)); // Output: Task completed!

Functions in Objects

Functions can also be stored in objects as properties.

const person = {
  name: "Alice",
  greet: function () {
    return `Hello, my name is ${this.name}`;
  },
};

console.log(person.greet()); // Output: Hello, my name is Alice

Learn More About TypeScript Functions

Function Types

Function types explicitly define the shape of a function, ensuring it follows a specific structure.

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

const subtract: MathOperation = (a, b) => a - b;
console.log(subtract(10, 5)); // Output: 5

Function Signatures

A function signature describes the expected structure of a function, making it easier to define consistent function types.

type Logger = (message: string) => void;

const log: Logger = (msg) => console.log(msg);
log("Logging message"); // Output: Logging message

Optional Function Parameters

You can make function parameters optional using ?.

function greetPerson(name: string, age?: number): string {
  return age ? `${name} is ${age} years old.` : `Hello, ${name}!`;
}

console.log(greetPerson("Bob")); // Output: Hello, Bob!
console.log(greetPerson("Alice", 30)); // Output: Alice is 30 years old.

Function Overloading in Objects

Function overloading is also useful when defining methods in objects.

const calculator = {
  add(a: number, b: number): number;
  add(a: string, b: string): string;
  add(a: number | string, b: number | string): number | string {
    return typeof a === "number" && typeof b === "number"
      ? a + b
      : `${a}${b}`;
  },
};

console.log(calculator.add(5, 10)); // Output: 15
console.log(calculator.add("Hello, ", "World!")); // Output: Hello, World!

Exporting and Importing Functions

You can export and import functions between files in TypeScript.

// utils.ts
export function multiply(a: number, b: number): number {
  return a * b;
}

// main.ts
import { multiply } from "./utils";

console.log(multiply(2, 3)); // Output: 6

Using Functions with Arrays

Functions can be used with array methods like map, filter, and reduce.

const numbers = [1, 2, 3, 4, 5];

const doubled = numbers.map((num) => num * 2);
console.log(doubled); // Output: [2, 4, 6, 8, 10]

Handling Async Functions in Objects

Objects can contain asynchronous functions to handle async operations.

const api = {
  async fetchData(url: string): Promise<string> {
    const response = await fetch(url);
    return response.text();
  },
};

// Usage
api.fetchData("https://example.com").then((data) => console.log(data));

TypeScript functions improve code reliability and maintainability by enforcing type safety. Whether you're using function types, optional parameters, async functions, or function overloading, TypeScript ensures that your functions behave as expected.

Learn TypeScript for Free
Start learning now
button icon
To advance beyond this tutorial and learn TypeScript by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH