A type to be inspected
(Optional) The list of parents types
Recursively inspects the structure of T to detect if a type is recursive.
Potentially recursive types, such as union types with a parent type, are considered recursion.
true if T is recursive.
false if T is not recursive.
boolean if T is a union type with a recursive type.
type RecursiveType = { r: RecursiveType };
type Recursive = IsTypeRecursive< RecursiveType >; // true
type PotentialRecursiveType = { r: PotentialRecursiveType | null };
type PotentialRecursive = IsTypeRecursive< PotentialRecursiveType >; // true
type IsNotRecursive = IsTypeRecursive< { a: { a: { a: { a: { a: 'a' } } } } } >; // false
Type Guard: detect if a type is recursive.