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]