packages/shared/src/is.ts (28 lines of code) (raw):
export function isString(o: unknown): o is string {
return typeof o === 'string';
}
export function isUndefined(o: unknown): o is undefined {
return typeof o === 'undefined';
}
export function isNull(o: unknown): o is null {
return o === null;
}
export function isObject<T>(o: unknown): o is T {
return o !== null && typeof o === 'object';
}
export function isBoolean(o: unknown): o is boolean {
return o === true || o === false;
}
export function isFunction(o: unknown): o is (...args: any[]) => any {
return typeof o === 'function';
}
export function isNumber(o: unknown): o is number {
return typeof o === 'number';
}
export function isBooleanStringLiteral(o: unknown): o is string {
return o === 'true' || o === 'false';
}
export const { isArray } = Array;
export function isEmpty(o: unknown): boolean {
return Object.keys(o).length === 0;
}