CodeBlanks Logo Icon CodeBlanks

Recursive generic types

Learn self-referencing generic types.

What is a recursive generic type?

A recursive generic type is a type that references itself in its definition. For example, tree structure types are defined this way. The expression type Tree<T> = { value: T; left?: Tree<T>; right?: Tree<T> } references the same type within itself.

type Tree<T> = {
  value: T;
  left?: Tree<T>;
  right?: Tree<T>;
};

Deep access with recursive types

A recursive generic type provides type-safe access to deeply nested data. Each node carries its own value and child nodes of the same type. The left and right fields are optional; leaf nodes may have no children.

const leaf: Tree<number> = { value: 5 };
const branch: Tree<number> = {
  value: 3,
  left: { value: 1 }
};

Practice Create a tree object

Define a recursive generic type named Agac: <T> = { deger: T; sol?: Agac<T>; sag?: Agac<T> }. The kok variable should be of type Agac<number> with value { deger: 1, sol: { deger: 2 } }. Print kok.sol.deger with console.log.

Starter code

index.ts
// Agac adinda recursive generic type tanimla
// deger, opsiyonel sol ve sag alanlari olsun
// kok nesnesi number parametreyle olsun
// kok.sol.deger yazdir

Sample solution

index.ts
type Agac<T> = {
  deger: T;
  sol?: Agac<T>;
  sag?: Agac<T>;
};
const kok: Agac<number> = { deger: 1, sol: { deger: 2 } };
console.log(kok.sol.deger);

Expected output

2

Questions and answers

Review the lesson questions together with their answers. To test yourself, solve the lesson interactively.

1 Where is a recursive generic type typically used?

  • For single-valued numbers
  • Only for strings
  • For self-repeating structures like trees or lists Correct answer
  • For fixed-length arrays

Explanation: A recursive generic type is used to define self-repeating nested structures such as trees and linked lists.

2 Recursive generic parameter

Question
type Agac<T> = {
  deger: T;
  sol?: ____<T>;
  sag?: Agac<T>;
};
Answer
type Agac<T> = {
  deger: T;
  sol?: Agac<T>;
  sag?: Agac<T>;
};

Explanation: A recursive type references itself; the left and right fields must also be of type Agac<T>.

3 Recursive generic concepts

Term Meaning
Agac<T> Self-referencing type
deger Node value
sol? Optional left subtree
sag? Optional right subtree

All lessons in Advanced