@shedevro/assert
Version:
Assertion typescript library for better, comfortable and safe coding. See readme!
79 lines (78 loc) • 2.9 kB
TypeScript
import { InstanceClass } from '@shedevro/core';
declare namespace Defined {
namespace Asserts {
type One = {
defined<T>(value: T, message?: string): asserts value is NonNullable<T>;
};
type Array = {
defined<T>(value: T[], message?: string): asserts value is NonNullable<T[]>;
};
type ArrayNullable = {
defined<T>(value: T[] | unknown, message?: string): asserts value is NonNullable<T[]> | null;
};
type Not = {
defined(value: unknown, message?: string): asserts value is null | undefined;
};
}
namespace ValueIs {
type One = {
defined<T>(value: T): value is NonNullable<T>;
};
type Array = {
defined<T>(value: T[]): value is NonNullable<T[]>;
};
type ArrayNullable = {
defined<T>(value: T[] | unknown): value is NonNullable<T[]> | null;
};
type Not = {
defined(value: unknown): value is null | undefined;
};
}
}
declare namespace Equal {
namespace Asserts {
type One = {
equal<TExpect extends string | number | boolean>(value: unknown, expect: TExpect, message?: string): asserts value is TExpect;
};
type Not = {
equal<TValue, TExpect extends string | number | boolean>(value: TValue, expect: TExpect, message?: string): asserts value is Exclude<TValue, TExpect>;
};
}
namespace ValueIs {
type One = {
equal<TExpect extends string | number | boolean>(value: unknown, expect: TExpect): value is TExpect;
};
type Not = {
equal<TValue, TExpect extends string | number | boolean>(value: TValue, expect: TExpect): value is Exclude<TValue, TExpect>;
};
}
}
declare namespace Throws {
namespace Asserts {
type One = {
throws(expression: unknown, expectedErrorClass?: InstanceClass, message?: string): void;
};
}
namespace ValueIs {
type One = {
throws(expression: unknown, expectedErrorClass?: InstanceClass): boolean;
};
}
}
export declare namespace OtherFunctions {
namespace Asserts {
type One = Defined.Asserts.One & Equal.Asserts.One & Throws.Asserts.One;
type OneNullable = Equal.Asserts.One;
type Array = Defined.Asserts.Array;
type ArrayNullable = Defined.Asserts.ArrayNullable;
type Not = Defined.Asserts.Not & Equal.Asserts.Not & Throws.Asserts.One;
}
namespace ValueIs {
type One = Defined.ValueIs.One & Equal.ValueIs.One & Throws.ValueIs.One;
type OneNullable = Equal.ValueIs.One;
type Array = Defined.ValueIs.Array;
type ArrayNullable = Defined.ValueIs.ArrayNullable;
type Not = Defined.ValueIs.Not & Equal.ValueIs.Not & Throws.ValueIs.One;
}
}
export {};