vben
2020-10-30 bdce84537aa58b9507744a3a14c8d598e88e95fc
提交 | 用户 | age
2f6253 1 const toString = Object.prototype.toString;
2
3 export function is(val: unknown, type: string) {
4   return toString.call(val) === `[object ${type}]`;
5 }
6
7 export const isDef = <T = unknown>(val?: T): val is T => {
8   return typeof val !== 'undefined';
9 };
10
11 export const isUnDef = <T = unknown>(val?: T): val is T => {
12   return !isDef(val);
13 };
14
15 export const isObject = (val: any): val is Record<any, any> => {
16   return val !== null && is(val, 'Object');
17 };
18
19 export function isDate(val: unknown): val is Date {
20   return is(val, 'Date');
21 }
22
23 export function isNull(val: unknown): val is null {
24   return val === null;
25 }
26
27 export function isNumber(val: unknown): val is number {
28   return is(val, 'Number');
29 }
30
31 export function isPromise<T = any>(val: unknown): val is Promise<T> {
32   return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch);
33 }
34
35 export function isString(val: unknown): val is string {
36   return is(val, 'String');
37 }
38
39 export const isFunction = (val: unknown): val is Function => typeof val === 'function';
40
41 export function isBoolean(val: unknown): val is boolean {
42   return is(val, 'Boolean');
43 }
44
45 export function isRegExp(val: unknown): val is RegExp {
46   return is(val, 'RegExp');
47 }
48
49 export function isArray(val: unknown): val is Array<any> {
50   return val && Array.isArray(val);
51 }
52
53 export const isClient = () => {
54   return typeof window !== 'undefined';
55 };
56
57 export const isWindow = (val: any): val is Window => {
58   return typeof window !== 'undefined' && is(val, 'Window');
59 };
60
61 export const isElement = (val: unknown): val is Element => {
62   return isObject(val) && !!val.tagName;
63 };
64
65 export const isServer = typeof window === 'undefined';
66
67 export function isImageDom(o: Element) {
68   return o && ['IMAGE', 'IMG'].includes(o.tagName);
69 }
f75425 70
V 71 export const isTextarea = (element: Element | null): element is HTMLTextAreaElement => {
72   return element !== null && element.tagName.toLowerCase() === 'textarea';
73 };