| const opt = Object.prototype.toString; | 
|   | 
| export function isArray(obj: any): obj is any[] { | 
|   return opt.call(obj) === '[object Array]'; | 
| } | 
|   | 
| export function isObject(obj: any): obj is { [key: string]: any } { | 
|   return opt.call(obj) === '[object Object]'; | 
| } | 
|   | 
| export function isString(obj: any): obj is string { | 
|   return opt.call(obj) === '[object String]'; | 
| } | 
|   | 
| export function isNumber(obj: any): obj is number { | 
|   return opt.call(obj) === '[object Number]' && obj === obj; // eslint-disable-line | 
| } | 
|   | 
| export function isRegExp(obj: any) { | 
|   return opt.call(obj) === '[object RegExp]'; | 
| } | 
|   | 
| export function isFile(obj: any): obj is File { | 
|   return opt.call(obj) === '[object File]'; | 
| } | 
|   | 
| export function isBlob(obj: any): obj is Blob { | 
|   return opt.call(obj) === '[object Blob]'; | 
| } | 
|   | 
| export function isUndefined(obj: any): obj is undefined { | 
|   return obj === undefined; | 
| } | 
|   | 
| export function isNull(obj: any): obj is null { | 
|   return obj === null; | 
| } | 
|   | 
| export function isFunction(obj: any): obj is (...args: any[]) => any { | 
|   return typeof obj === 'function'; | 
| } | 
|   | 
| export function isEmptyObject(obj: any): boolean { | 
|   return isObject(obj) && Object.keys(obj).length === 0; | 
| } | 
|   | 
| export function isExist(obj: any): boolean { | 
|   return obj || obj === 0; | 
| } | 
|   | 
| export function isWindow(el: any): el is Window { | 
|   return el === window; | 
| } |