/** Returns a boolean for whether given two types are equal. @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650 */ type IsEqual = (() => G extends T ? 1 : 2) extends (() => G extends U ? 1 : 2) ? true : false; /** Returns a boolean for whether the given array includes the given item. This can be useful if another type wants to make a decision based on whether the array includes that item. @example ``` import {Includes} from 'type-fest'; type hasRed = Includes; ``` @category Utilities */ export type Includes = IsEqual extends true ? true : Value extends [Value[0], ...infer rest] ? Includes : false;