0%
Generics in TypeScript

Generics

Reusable code with type safety

10-15 min

Generics in TypeScript

Generics let you create reusable components that can work with different types while preserving type safety.

Introduction to generics

The problem without generics

// Without generics - duplicated code
function identiteString(arg: string): string {
  return arg;
}

function identiteNumber(arg: number): number {
  return arg;
}

function identiteBoolean(arg: boolean): boolean {
  return arg;
}

// Or using any - loss of type safety
function identiteAny(arg: any): any {
  return arg;
}

The solution with generics

// With generics - reusable and type-safe
function identite<T>(arg: T): T {
  return arg;
}

// Usage
let resultatString = identite<string>("hello");     // Type: string
let resultatNumber = identite<number>(42);          // Type: number
let resultatBoolean = identite<boolean>(true);     // Type: boolean

// Type inference
let resultat1 = identite("hello");  // TypeScript infers T = string
let resultat2 = identite(42);       // TypeScript infers T = number

Generic functions

Basic syntax

// Simple generic function
function premierElement<T>(tableau: T[]): T | undefined {
  return tableau[0];
}

let nombres = [1, 2, 3, 4, 5];
let premier = premierElement(nombres); // Type: number | undefined

let mots = ["hello", "world"];
let premierMot = premierElement(mots); // Type: string | undefined

Comments

Comments are powered by GitHub Discussions

Sign in with GitHub to join the discussion

Link copied!