Recursive types, are self-referential, and are often used to describe infinitely nestable types. For example, consider infinitely nestable arrays of numbers
[3, 4, [5, 6, [7], 59], 221]
You may read or see things that indicate you must use a combination of interface
and type
for recursive types. As of TypeScript 3.7 this is now much easier, and works with either type aliases or interfaces.
type NestedNumbers = number | NestedNumbers[] const val: NestedNumbers = [3, 4, [5, 6, [7], 59], 221]