Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions packages/core/src/types.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,35 @@
/**
* check if value is null
* @param val value
* @returns true/false
*/
export function isNull(val: any): value is null {
return val === null;
}

/**
* check if value is undefined
* @param val value
* @returns true/false
*/
export function isUndef(val: unknown): val is undefined {
return val === void 0;
export function isUndefined(val: any): val is undefined {
return typeof val === 'undefined';
}

/**
* alias to isUndefined
* @deprecated Use `isUndefined` instead. This alias may cause confusion due to inconsistent naming conventions.
* @param val value
* @returns true/false
*/
export const isUndef = isUndefined;

/**
* check if value is a array
* @param val value
* @returns true/false
*/
export function isArray(val: unknown): val is any[] {
export function isArray<T extends unknown>(val: any): val is T[] {
return Array.isArray(val);
}

Expand All @@ -21,7 +38,7 @@ export function isArray(val: unknown): val is any[] {
* @param val value
* @returns true/false
*/
export function isObject(val: unknown): val is Record<any, any> {
export function isObject<T extends object>(val: any): val is T {
return val !== null && typeof val === 'object';
}

Expand All @@ -31,16 +48,25 @@ const toString = (x: any) => Object.prototype.toString.call(x);
* @param val value
* @returns true/false
*/
export function isPlainObject(val: unknown): val is Record<any, any> {
export function isPlainObject<T extends object>(val: any): val is T {
return toString(val) === '[object Object]';
}

/**
* check if value is a date
* @param val value
* @returns true/false
*/
export function isDate(val: any): val is Date {
return toString(val) === '[object Date]';
}

/**
* check if value is a function
* @param val value
* @returns true/false
*/
export function isFunction(val: unknown): val is Function {
export function isFunction<T extends Function>(val: any): val is T {
return typeof val === 'function';
}

Expand Down
Loading