DEV Community

Dharan Ganesan
Dharan Ganesan

Posted on

2 1 1

Day 42: Typed Functions

Defining Functions

In TypeScript, you can define functions using the function keyword or as arrow functions (=>). Let's start with the traditional function definition:

function greet(name: string): string {
  return `Hello, ${name}! 👋`;
}
Enter fullscreen mode Exit fullscreen mode

And here's an arrow function equivalent:

const greet = (name: string): string => `Hello, ${name}! 👋`;
Enter fullscreen mode Exit fullscreen mode

Optional and Default Parameters

In TypeScript, you can make function parameters optional by adding a ? after their name. You can also provide default values:

function welcome(name: string = "User", age?: number): string {
  if (age) {
    return `Welcome, ${name}! You are ${age} years old. 🎉`;
  } else {
    return `Welcome, ${name}! 🎉`;
  }
}
Enter fullscreen mode Exit fullscreen mode

Here, the name parameter is optional, and if age is not provided, it defaults to undefined.

Rest Parameters

If you want to pass an arbitrary number of arguments to a function, you can use rest parameters:

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

const result = sum(1, 2, 3, 4, 5); // result is 15
Enter fullscreen mode Exit fullscreen mode

The ...numbers syntax allows you to pass any number of arguments, which are then treated as an array within the function.

Function Overloading

TypeScript allows you to define multiple function signatures for the same function name, known as function overloading:

function combine(a: string, b: string): string;
function combine(a: number, b: number): number;
function combine(a: any, b: any): any {
  return a + b;
}

const result1 = combine("Hello, ", "TypeScript!"); // result1 is a string
const result2 = combine(5, 10); // result2 is a number
Enter fullscreen mode Exit fullscreen mode

Depending on the arguments provided, TypeScript will select the appropriate function signature.

Higher-Order Functions

You can also create higher-order functions that take functions as parameters or return functions:

function apply(func: (x: number) => number, value: number): number {
  return func(value);
}

const square = (x: number) => x * x;
const result = apply(square, 5); // result is 25
Enter fullscreen mode Exit fullscreen mode

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more