import { Match } from './_Internal'; import { Extends } from './Extends'; import { Equals } from './Equals'; import { Contains } from './Contains'; /** * Check whether `A` is similar to `A1` or not. In other words, it is a compact * type that bundles [[Equals]], [[Extends]], [[Contains]], comparison types. * @param A to be compared * @param A1 to compare to * @param match (?=`'default'`) to change precision * @returns [[Boolean]] * @example * ```ts * import {A} from 'ts-toolbelt' * * type test0 = A.Is<'a', 'a' | 'b', 'extends->'> // True * type test1 = A.Is<'a' | 'b', 'a', 'extends->'> // Boolean * * type test2 = A.Is<'a', 'a' | 'b', '<-extends'> // Boolean * type test3 = A.Is<'a' | 'b', 'a', '<-extends'> // True * * type test4 = A.Is<'a', 'a' | 'b', 'contains->'> // True * type test5 = A.Is<'a' | 'b', 'a', 'contains->'> // False * * type test6 = A.Is<'a', 'a' | 'b', '<-contains'> // False * type test7 = A.Is<'a' | 'b', 'a', '<-contains'> // True * * type test8 = A.Is<'a', 'a' | 'b', 'equals'> // False * type test9 = A.Is<'b' |'a', 'a' | 'b', 'equals'> // True * ``` */ export declare type Is = { 'default': Extends; 'contains->': Contains; 'extends->': Extends; '<-contains': Contains; '<-extends': Extends; 'equals': Equals; }[match];