Generics

Edit dazzling-sun-8cl98

Generic types are like functions for type declarations the let you pass some arguments (other types) later. This is a (part of) simple linked list implementation:

type ListNode = {
  value: any;
  next: ListNode|null;
}

function add(head: ListNode, value: any): ListNode {
  const newElement: ListNode = { value, next: null };
  let current: ListNode = head;

  while (current.next) {
      current = current.next;
  }

  current.next = newElement;

  return current;
}

This code is fine, it works, but gives no type safety:

Generics give us a way to specify: this is a LinkedList of numbers. Or strings. Or whatever.

A generic type

This is the same type, but this time written as generic:

T is the variable type argument here. When creating the head element we'll specify the type of values in the list:

Trying to give different type of value will result in an error:

Generic functions

Functions can be generic too! First, let's take a look at a simple example:

Great thing about generic functions is that TypeScript is actually quite smart about them. This obviously works as expected:

But TypeScript is also to guess the type T based on the first argument it gets.

Let's rewrite the add function from previous example:

Resources

Last updated

Was this helpful?