typechecker
Version:
Utilities to get and check variable types (isString, isPlainObject, isRegExp, etc)
166 lines • 8.93 kB
TypeScript
/** Determines if the passed value is of a specific type */
export type TypeTester = (value: any) => boolean;
/**
* The interface for a type mapping (key => function) to use for {@link getType}.
export * The key represents the name of the type. The function represents the {@link TypeTester test method}.
* The map should be ordered by testing preference, with more specific tests first.
* If a test returns true, it is selected, and the key is returned as the type.
*/
export interface TypeMap {
[type: string]: TypeTester;
}
export type AnyFunction = Function;
export type Nullish = undefined | null;
export type NonNullishObject = object;
export type NativeClass = abstract new (...args: any) => any;
export type AnyNumber = number | Number;
export type AnyString = string | String;
export type AnyBoolean = boolean | Boolean;
export type AnyArray = any[];
export type PlainObject = Record<any, {}>;
export type AnyMap = Map<any, any>;
export type AnyWeakMap = WeakMap<WeakKey, any>;
export type EmptyArray = [];
export type Any = boolean | number | bigint | string | null | undefined | void | symbol | object | PlainObject | AnyArray | AnyMap | AnyWeakMap;
/** Get the object type string */
export declare function getObjectType(value?: any): string;
/** Checks to see if a value is an object */
export declare function isObject(value: NonNullishObject): true;
export declare function isObject(value?: Exclude<Any, NonNullishObject>): false;
export declare function isObject(value?: any): value is NonNullishObject;
/** Checks to see if a value is an object and only an object */
export declare function isPlainObject(value: PlainObject): true;
export declare function isPlainObject(value?: Exclude<Any, PlainObject>): false;
export declare function isPlainObject(value?: any): value is PlainObject;
/** Is ES6+ class */
export declare function isNativeClass(value: NativeClass): true;
export declare function isNativeClass(value?: Exclude<Any, NativeClass>): false;
export declare function isNativeClass(value?: any): value is NativeClass;
/**
* Is Conventional Class
* Looks for function with capital first letter MyClass
* First letter is the 9th character
* If changed, isClass must also be updated
*/
export declare function isConventionalClass(value: NativeClass): false;
export declare function isConventionalClass(value: Function): boolean;
export declare function isConventionalClass(value?: Exclude<Any, Function>): false;
export declare function isConventionalClass(value?: any): value is Function;
/** Is Class */
export declare function isClass(value: NativeClass): true;
export declare function isClass(value: Function): boolean;
export declare function isClass(value?: Exclude<Any, NativeClass | Function>): false;
export declare function isClass(value?: any): value is NativeClass | Function;
/** Checks to see if a value is an error */
export declare function isError(value: Error): true;
export declare function isError(value?: Exclude<Any, Error>): false;
export declare function isError(value?: any): value is Error;
/** Checks to see if a value is a date */
export declare function isDate(value: Date): true;
export declare function isDate(value?: Exclude<Any, Date>): false;
export declare function isDate(value?: any): value is Date;
/** Checks to see if a value is an arguments object */
export declare function isArguments(value: IArguments): true;
export declare function isArguments(value?: Exclude<Any, IArguments>): false;
export declare function isArguments(value?: any): value is IArguments;
/** Checks to see if a value is a function but not an asynchronous function */
export declare function isSyncFunction(value: Function): boolean;
export declare function isSyncFunction(value?: Exclude<Any, Function>): false;
export declare function isSyncFunction(value?: any): value is Function;
/** Checks to see if a value is an asynchronous function */
export declare function isAsyncFunction(value: Function): boolean;
export declare function isAsyncFunction(value?: Exclude<Any, Function>): false;
export declare function isAsyncFunction(value?: any): value is Function;
/** Checks to see if a value is a function */
export declare function isFunction(value: Function): true;
export declare function isFunction(value?: Exclude<Any, Function>): false;
export declare function isFunction(value?: any): value is Function;
/** Checks to see if a value is an regex */
export declare function isRegExp(value: RegExp): true;
export declare function isRegExp(value?: Exclude<Any, RegExp>): false;
export declare function isRegExp(value?: any): value is RegExp;
/** Checks to see if a value is an array */
export declare function isArray(value: AnyArray): true;
export declare function isArray(value?: Exclude<Any, AnyArray>): false;
export declare function isArray(value?: any): value is AnyArray;
/** Checks to see if a value is a number */
export declare function isNumber(value: AnyNumber): true;
export declare function isNumber(value?: Exclude<Any, AnyNumber>): false;
export declare function isNumber(value?: any): value is AnyNumber;
/** Checks to see if a value is a string */
export declare function isString(value: AnyString): true;
export declare function isString(value?: Exclude<Any, AnyString>): false;
export declare function isString(value?: any): value is AnyString;
/** Checks to see if a value is a boolean */
export declare function isBoolean(value: AnyBoolean): true;
export declare function isBoolean(value?: Exclude<Any, AnyBoolean>): false;
export declare function isBoolean(value?: any): value is AnyBoolean;
/** Checks to see if a value is null */
export declare function isNull(value: null): true;
export declare function isNull(value?: Exclude<Any, null>): false;
export declare function isNull(value?: any): value is null;
/** Checks to see if a value is undefined */
export declare function isUndefined(value?: undefined): true;
export declare function isUndefined(value?: Exclude<Any, undefined>): false;
export declare function isUndefined(value?: any): value is undefined;
/** Checks to see if a value is nullish */
export declare function isNullish(value?: Nullish): true;
export declare function isNullish(value?: Exclude<Any, Nullish>): false;
export declare function isNullish(value?: any): value is Nullish;
/** Checks to see if a value is a Map */
export declare function isMap(value: AnyMap): true;
export declare function isMap(value?: Exclude<Any, AnyMap>): false;
export declare function isMap(value?: any): value is AnyMap;
/** Checks to see if a value is a WeakMap */
export declare function isWeakMap(value: AnyMap): false;
export declare function isWeakMap(value: AnyWeakMap): true;
export declare function isWeakMap(value?: Exclude<Any, AnyWeakMap>): false;
export declare function isWeakMap(value?: any): value is AnyWeakMap;
/**
* Is empty array
* @throws if the value was not an array
*/
export declare function isEmptyArray(value: EmptyArray): true;
export declare function isEmptyArray(value: AnyArray): false;
export declare function isEmptyArray(value?: Exclude<Any, AnyArray>): never;
export declare function isEmptyArray(value?: any): value is EmptyArray;
/**
* Is empty plain object
* @throws if the value was not a plain object
*/
export declare function isEmptyPlainObject(value: PlainObject): boolean;
export declare function isEmptyPlainObject(value?: Exclude<Any, PlainObject>): never;
export declare function isEmptyPlainObject(value?: any): value is PlainObject;
/**
* Is empty map
* @throws if the value was not a Map
*/
export declare function isEmptyMap(value: AnyMap): boolean;
export declare function isEmptyMap(value?: Exclude<Any, AnyMap>): never;
export declare function isEmptyMap(value?: any): value is AnyMap;
/**
* Is empty weak map
* @throws if the value was not a WeakMap
*/
export declare function isEmptyWeakMap(value: AnyMap): never;
export declare function isEmptyWeakMap(value: AnyWeakMap): boolean;
export declare function isEmptyWeakMap(value?: Exclude<Any, AnyWeakMap>): never;
export declare function isEmptyWeakMap(value?: any): value is AnyWeakMap;
/** Is empty keys */
export declare function isEmptyKeys(value: EmptyArray): true;
export declare function isEmptyKeys(value: AnyArray): false;
export declare function isEmptyKeys(value: NonNullishObject): boolean;
export declare function isEmptyKeys(value?: any): false;
/**
* The default {@link TypeMap} for {@link getType}.
export * AsyncFunction and SyncFunction are missing, as they are more specific types that people can detect afterwards.
* @readonly
*/
export declare const typeMap: TypeMap;
/**
* Cycle through the passed {@link TypeMap} testing the value, returning the first type that passes, otherwise `null`.
* @param value the value to test
* @param customTypeMap defaults to {@link typeMap}
*/
export declare function getType(value: any, customTypeMap?: TypeMap): string | null;
//# sourceMappingURL=index.d.ts.map