import type {AllExtend} from './all-extend.d.ts'; /** Returns a boolean for whether two given types are both true. Use-case: Constructing complex conditional types where multiple conditions must be satisfied. @example ``` import type {And} from 'type-fest'; type TT = And; //=> true type TF = And; //=> false type FT = And; //=> false type FF = And; //=> false ``` Note: When `boolean` is passed as an argument, it is distributed into separate cases, and the final result is a union of those cases. For example, `And` expands to `And | And`, which simplifies to `true | false` (i.e., `boolean`). @example ``` import type {And} from 'type-fest'; type A = And; //=> boolean type B = And; //=> boolean type C = And; //=> false type D = And; //=> false type E = And; //=> boolean ``` Note: If either of the types is `never`, the result becomes `false`. @example ``` import type {And} from 'type-fest'; type A = And; //=> false type B = And; //=> false type C = And; //=> false type D = And; //=> false type E = And; //=> false type F = And; //=> false type G = And; //=> false ``` @see {@link Or} */ export type And = AllExtend<[A, B], true>; export {};