UNPKG

nanotypes

Version:

Minimal, runtime-safe type checks for modern Vanilla JS

127 lines (113 loc) 5.62 kB
// index.d.ts // === Generic Guards === export function is<T>(x: unknown, constructor: new (...args: any[]) => T): x is T; export function assertType<T>(x: unknown, constructor: new (...args: any[]) => T): asserts x is T; // === is namespace === export namespace is { // typeof-based function string(x: unknown): x is string; function number(x: unknown): x is number; function boolean(x: unknown): x is boolean; function bigint(x: unknown): x is bigint; function symbol(x: unknown): x is symbol; function undefined(x: unknown): x is undefined; function func(x: unknown): x is (...args: any[]) => any; // instanceof-based function textNode(x: unknown): x is Text; function element(x: unknown): x is Element; function htmlElement(x: unknown): x is HTMLElement; function inputEvent(x: unknown): x is InputEvent; function keyboardEvent(x: unknown): x is KeyboardEvent; function mouseEvent(x: unknown): x is MouseEvent; function focusEvent(x: unknown): x is FocusEvent; function formData(x: unknown): x is FormData; function comment(x: unknown): x is Comment; function document(x: unknown): x is Document; function node(x: unknown): x is Node; function window(x: unknown): x is Window; function file(x: unknown): x is File; function fileList(x: unknown): x is FileList; function image(x: unknown): x is HTMLImageElement; function blob(x: unknown): x is Blob; function canvas(x: unknown): x is HTMLCanvasElement; function video(x: unknown): x is HTMLVideoElement; function audio(x: unknown): x is HTMLAudioElement; function date(x: unknown): x is Date; function regexp(x: unknown): x is RegExp; function map(x: unknown): x is Map<any, any>; function set(x: unknown): x is Set<any>; function weakMap(x: unknown): x is WeakMap<any, any>; function weakSet(x: unknown): x is WeakSet<any>; function arrayBuffer(x: unknown): x is ArrayBuffer; function dataView(x: unknown): x is DataView; function promise(x: unknown): x is Promise<any>; function error(x: unknown): x is Error; function headers(x: unknown): x is Headers; function request(x: unknown): x is Request; function response(x: unknown): x is Response; function url(x: unknown): x is URL; function urlSearchParams(x: unknown): x is URLSearchParams; function worker(x: unknown): x is Worker; function sharedWorker(x: unknown): x is SharedWorker; function broadcastChannel(x: unknown): x is BroadcastChannel; function intlDateTimeFormat(x: unknown): x is Intl.DateTimeFormat; function intlNumberFormat(x: unknown): x is Intl.NumberFormat; function intlCollator(x: unknown): x is Intl.Collator; // manual guards function numberSafe(x: unknown): x is number; function array(x: unknown): x is any[]; function defined<T>(x: T | null | undefined): x is T; function nullish(x: unknown): x is null | undefined; function nil(x: unknown): x is null; function contentEditable(x: unknown): x is HTMLElement; function object(x: unknown): x is Record<string, any>; function objectStrict(x: unknown): x is Record<string, unknown>; function plainObject(x: unknown): x is Record<string, unknown>; function pojo(x: unknown): x is Record<string, unknown>; function objectLoose(x: unknown): x is object; // derived value checks function truthy(x: unknown): boolean; function falsy(x: unknown): boolean; function emptyString(x: unknown): x is ''; function nonEmptyString(x: unknown): x is string; function positiveNumber(x: unknown): x is number; function negativeNumber(x: unknown): x is number; function integer(x: unknown): x is number; function finite(x: unknown): x is number; } // === assertType namespace === export namespace assertType { function string(x: unknown): asserts x is string; function number(x: unknown): asserts x is number; function boolean(x: unknown): asserts x is boolean; function bigint(x: unknown): asserts x is bigint; function symbol(x: unknown): asserts x is symbol; function undefined(x: unknown): asserts x is undefined; function func(x: unknown): asserts x is (...args: any[]) => any; function array(x: unknown): asserts x is any[]; function numberSafe(x: unknown): asserts x is number; function object(x: unknown): asserts x is Record<string, any>; function defined<T>(x: T | null | undefined): asserts x is T; function nullish(x: unknown): asserts x is null | undefined; function nil(x: unknown): asserts x is null; function contentEditable(x: unknown): asserts x is HTMLElement; function objectStrict(x: unknown): asserts x is Record<string, unknown>; function plainObject(x: unknown): asserts x is Record<string, unknown>; function pojo(x: unknown): asserts x is Record<string, unknown>; function objectLoose(x: unknown): asserts x is object; function promise(x: unknown): asserts x is Promise<any>; function date(x: unknown): asserts x is Date; function error(x: unknown): asserts x is Error; function truthy(x: unknown): asserts x is boolean; function falsy(x: unknown): asserts x is boolean; function emptyString(x: unknown): asserts x is ''; function nonEmptyString(x: unknown): asserts x is string; function positiveNumber(x: unknown): asserts x is number; function negativeNumber(x: unknown): asserts x is number; function integer(x: unknown): asserts x is number; function finite(x: unknown): asserts x is number; } // === describe namespace === export namespace describe { function value(x: unknown): string; }