is.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. export {
  2. isArguments,
  3. isArrayBuffer,
  4. isArrayLike,
  5. isArrayLikeObject,
  6. isBuffer,
  7. isBoolean,
  8. isDate,
  9. isElement,
  10. isEmpty,
  11. isEqual,
  12. isEqualWith,
  13. isError,
  14. isFunction,
  15. isFinite,
  16. isLength,
  17. isMap,
  18. isMatch,
  19. isMatchWith,
  20. isNative,
  21. isNil,
  22. isNumber,
  23. isNull,
  24. isObjectLike,
  25. isPlainObject,
  26. isRegExp,
  27. isSafeInteger,
  28. isSet,
  29. isString,
  30. isSymbol,
  31. isTypedArray,
  32. isUndefined,
  33. isWeakMap,
  34. isWeakSet,
  35. } from 'lodash-es'
  36. const toString = Object.prototype.toString
  37. export function is(val: unknown, type: string) {
  38. return toString.call(val) === `[object ${type}]`
  39. }
  40. export function isDef<T = unknown>(val?: T): val is T {
  41. return typeof val !== 'undefined'
  42. }
  43. // TODO 此处 isObject 存在歧义
  44. export function isObject(val: any): val is Record<any, any> {
  45. return val !== null && is(val, 'Object')
  46. }
  47. // TODO 此处 isArray 存在歧义
  48. export function isArray(val: any): val is Array<any> {
  49. return val && Array.isArray(val)
  50. }
  51. export function isWindow(val: any): val is Window {
  52. return typeof window !== 'undefined' && is(val, 'Window')
  53. }
  54. export const isServer = typeof window === 'undefined'
  55. export const isClient = !isServer
  56. export function isHttpUrl(path: string): boolean {
  57. const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/
  58. return reg.test(path)
  59. }
  60. export function isPascalCase(str: string): boolean {
  61. const regex = /^[A-Z][A-Za-z]*$/
  62. return regex.test(str)
  63. }