Recursive generic types
- TypeScript course
- Advanced
- Lesson 3/57
- 4 min
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
// Agac adinda recursive generic type tanimla
// deger, opsiyonel sol ve sag alanlari olsun
// kok nesnesi number parametreyle olsun
// kok.sol.deger yazdirSample solution
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
type Agac<T> = {
deger: T;
sol?: ____<T>;
sag?: Agac<T>;
};
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 |