Options
All
  • Public
  • Public/Protected
  • All
Menu

autils

Alita NPM version NPM downloads

小巧实用的前端工具类库。

✨ 特性

  • ✏️ 使用TypeScript编写,类型友好
  • ✨ 源于日常项目的积累,更实用
  • 🐳 使用Jest进行严格测试,更稳定
  • ⚡️ 支持按需加载,请配合babel-plugin-import使用

📦 安装

  • npm安装
npm install @alitajs/autils --save
  • yarn 安装(推荐)
yarn add @alitajs/autils

📝 目录

工具类

  • ArabicChinese 阿拉伯数字和中文数字互转
  • NumberPrecision 解决浮动运算问题,避免小数点后产生多数值和计算精度损失
  • Policy 解析权限策略,并提供验证功能

工具函数

  • arrayToObject 转换数组为对象
  • arrayToTree 将数组转换为树形结构数据
  • dedent 每一行紧跟前导空白的插入值,为多行时,保持缩进。并移除每一行的公共前导空白。
  • deepClone 深拷贝
  • delay 休眠函数
  • forOwn 遍历对象的可枚举属性。若遍历函数返回 false,遍历会提前退出。
  • getType 检测 value 的类型
  • groupBy 根据迭代函数返回的值对 data 进行分组。
  • immediate 推迟执行
  • indent 每一行紧跟前导空白的插入值为多行时,保持缩进。
  • isArray 检查 value 是否是一个数组
  • isBoolean 检查 value 是否是一个布尔值。
  • isDate 检查 value 是否是一个日期
  • isEmail 检查value是否为邮箱。
  • isEmptyObject 检查 obj 是否是一个空对象
  • isFunction 检查 value 是否是一个函数
  • isIdCard 检查 value 是否是一个身份证号
  • isInteger 检查 value 是否是一个整数。
  • isNaN 检查 value 是否是 NaN
  • isNegativeInteger 检查 value 是否是一个负整数
  • isNil 检查 value 是否是 nullundefined
  • isNull 检查 value 是否是 null
  • isNumber 检查 value 是否是一个数字。
  • isObject 检查 value 是否是一个对象
  • isPhone 检查value是否为手机号。
  • isPromise 检查value是否为Promise
  • isRegExp 检查 value 是否是一个正则对象。
  • isString 检查 value 是否是一个字符串
  • isSymbol 检查 value 是否是原始 Symbol 或者对象。
  • isUndefined 检查 value 是否等于 undefined
  • isUrl 检查 value 是否是一个Url
  • urlToList 转换url为数组

工具类型

Index

Type aliases

AnyFunction

AnyFunction: function

任意函数类型。

Type declaration

    • (...args: any[]): any
    • Parameters

      • Rest ...args: any[]

      Returns any

AnyObject

AnyObject: Record<keyof any, any>

任意对象类型。

Defined

Defined<T>: Exclude<T, undefined>

T 中排除 undefined 类型。

example
interface User {
  gender?: 'male' | 'female',
}
// before
type UserGender = Exclude<User['gender'], undefined>
// after
type UserGender = Defined<User['gender']>

Type parameters

  • T

IRoundType

IRoundType: "default" | "down" | "up"

TBrand

TBrand<T, B>: T & object

名义化类型。

example
type User = { id: Brand<number, User>, name: string }
type Post = { id: Brand<number, Post>, title: string }
type UserIdIsNumber = User['id'] extends number ? true: false // => true
type PostIdIsNumber = Post['id'] extends number ? true: false // => true
type PostIdIsNotUserId = Post['id'] extends User['id'] ? false : true // => true

Type parameters

  • T

  • B

TGetTypeReturn

TGetTypeReturn: TLiteralUnion<"Undefined" | "Null" | "Array" | "String" | "Arguments" | "Function" | "Error" | "Boolean" | "Number" | "Date" | "RegExp" | "Object" | "JSON" | "Math" | "Symbol" | "Map" | "Set" | "WeakMap" | "WeakSet", string>

TLiteralUnion

TLiteralUnion<L, B>: L | TBrand<B, never>

字面量联合类型

Type parameters

  • L

  • B

Functions

arrayToObject

  • arrayToObject(source: any[]): object
  • 转换数组为对象

    since

    0.1.1

    Parameters

    • source: any[]

    Returns object

arrayToTree

  • 将数组转换为树形结构数据

    since

    0.0.6

    Parameters

    Returns any[]

dedent

  • dedent(literals: TemplateStringsArray, ...interpolations: any[]): string
  • dedent(text: string): string
  • 每一行紧跟前导空白的插入值,为多行时,保持缩进。并移除每一行的公共前导空白。

    example
    const text = 'hello\nworld'
    dedent`
      ${text}
        -.-
    ` // => 'hello\nworld\n  -.-'

    Parameters

    • literals: TemplateStringsArray

      字面值

    • Rest ...interpolations: any[]

      插入值

    Returns string

    返回结果

  • 移除文本中每一行的公共前导空白。

    example
    dedent(`
      hello
      world
        -.-
    `) // => 'hello\nworld\n  -.-'

    Parameters

    • text: string

      要操作的文本

    Returns string

    返回操作后的文本

deepClone

  • deepClone(data: any): any
  • 深拷贝

    Parameters

    • data: any

    Returns any

delay

  • delay<T>(delayTime: number, value: T): Promise<T>
  • delay<T>(delayTime: number): Promise<void>
  • 休眠函数

    Type parameters

    • T

    Parameters

    • delayTime: number

      休眠时间 以毫秒为单位

    • value: T

      延迟后返回的值

    Returns Promise<T>

  • 休眠函数

    Type parameters

    • T

    Parameters

    • delayTime: number

      休眠时间 以毫秒为单位

    Returns Promise<void>

forOwn

  • 遍历对象的可枚举属性。若遍历函数返回 false,遍历会提前退出。

    注:基于你传入的 obj,遍历函数中 key 的类型可能为 number, 但在运行时,key 始终为 string, 因此,你应该始终把 key 当作 string 处理。 (为什么会这样?https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208)

    example
    forOwn(
      { x: '1', y: 2 },
      (value, key) => {
        console.log(key, value)
      }
    )

    Type parameters

    Parameters

    Returns void

getType

  • 检测 value 的类型

    since

    0.1.1

    example
     getType(1) // => 'Number'
     getType(true) // => 'Boolean'

    Parameters

    • value: any

      要检测的值

    Returns TGetTypeReturn

    返回检测值的类型

groupBy

  • 根据迭代函数返回的值对 data 进行分组。

    example
    groupBy(
      [
        { module: 'module1', action: 'action1' },
        { module: 'module1', action: 'action2' },
        { module: 'module2', action: 'action1' }
      ],
      item => item.module,
    )
    // => {
    // =>   module1: [
    // =>     { module: 'module1', action: 'action1' },
    // =>     { module: 'module1', action: 'action2' },
    // =>   ],
    // =>   module2: [
    // =>     { module: 'module2', action: 'action1' }
    // =>   ]
    // => }

    Type parameters

    • T

    • K: keyof any

    Parameters

    Returns object

    返回分组结果

immediate

  • immediate<T>(value: T): Promise<T>
  • immediate<T>(): Promise<void>
  • 推迟执行

    Type parameters

    • T

    Parameters

    • value: T

    Returns Promise<T>

  • 推迟执行

    Type parameters

    • T

    Returns Promise<void>

indent

  • indent(literals: TemplateStringsArray, ...interpolations: any[]): string
  • indent(text: string, leadingString: string): string
  • indent(text: string, callback: function): string
  • 每一行紧跟前导空白的插入值为多行时,保持缩进。

    example
    const text = 'hello\nworld'
    indent`  ${text}` // => '  hello\n  world'

    Parameters

    • literals: TemplateStringsArray

      字面值

    • Rest ...interpolations: any[]

      插入值

    Returns string

    返回结果

  • 给文本每一行的开始加上一个前导字符串。

    example
    indent('hello\nworld', '-> ')
    // => '-> hello\n-> world'

    Parameters

    • text: string

      要操作的文本

    • leadingString: string

      前导字符串

    Returns string

    返回结果

  • 给文本每一行的开始加上一个前导字符串,前导字符串由回调函数返回。

    example
    indent(
      'hello\nworld',
      (lineStr, lineIndex) => `${lineIndex + 1}. `,
    )
    // => '1. hello\n2. world'

    Parameters

    • text: string

      要操作的文本

    • callback: function

      回调函数

        • (lineString: string, lineIndex: number): string
        • Parameters

          • lineString: string
          • lineIndex: number

          Returns string

    Returns string

    返回结果

isArray

  • isArray(value: any): boolean
  • 检查 value 是否是一个数组

    since

    0.0.6

    example
    isArray(['x']) // => true
    isArray('x') // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是数组返回 true,否则返回 false

isBoolean

  • isBoolean(value: any): boolean
  • 检查 value 是否是一个布尔值。

    since

    0.0.6

    example
    isBoolean(true) // => true
    isBoolean(false) // => true
    isBoolean('true') // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是布尔值返回 true,否则返回 false

isDate

  • isDate(value: any): boolean
  • 检查 value 是否是一个日期

    since

    0.1.1

    example
    isDate(new Date()) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是日期返回 true,否则返回 false

isEmail

  • isEmail(value: any): boolean
  • 检查value是否为邮箱。

    since

    0.0.6

    example
    isEmail('156148999@qq.com')
    // => true

    Parameters

    • value: any

    Returns boolean

isEmptyObject

  • isEmptyObject(obj: object): boolean
  • 检查 obj 是否是一个空对象

    since

    0.1.1

    example
    isEmptyObject({}) // => true
    isFunction({a: 1}) // => false

    Parameters

    • obj: object

      要检查的值

    Returns boolean

    obj 是空对象返回 true,否则返回 false

isFunction

  • isFunction(value: any): boolean
  • 检查 value 是否是一个函数

    since

    0.0.6

    example
    isFunction(() => {}) // => true
    isFunction(2) // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是函数返回 true,否则返回 false

isIdCard

  • isIdCard(value: any): boolean
  • 检查 value 是否是一个身份证号

    since

    0.0.6

    example
    isIdCard('123') // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

isInteger

  • isInteger(value: any): boolean
  • 检查 value 是否是一个整数。

    since

    0.1.1

    example
    isInteger(1) // => true
    isInteger(1.2) // => false
    isInteger(-1) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是整数返回 true,否则返回 false

isNaN

  • isNaN(value: any): boolean
  • 检查 value 是否是 NaN

    since

    0.1.1

    example
    isNaN(NaN) // => true
    isNaN(2) // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    valueNaN 返回 true,否则返回 false

isNegativeInteger

  • isNegativeInteger(value: any): boolean
  • 检查 value 是否是一个负整数

    since

    0.1.1

    example
    isNegativeInteger(-1) // => true
    isNegativeInteger(1) // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是负整数返回 true,否则返回 false

isNil

  • isNil(value: any): boolean
  • 检查 value 是否是 nullundefined

    since

    0.1.1

    example
    isNil(null) // => true
    isNil(undefined) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    valuenullundefined 返回 true,否则返回 false

isNull

  • isNull(value: any): boolean
  • 检查 value 是否是 null

    since

    0.0.6

    example
    isNull(null) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    valuenull 返回 true,否则返回 false

isNumber

  • isNumber(value: any): boolean
  • 检查 value 是否是一个数字。

    since

    0.1.1

    example
    isNumber(1) // => true
    isNumber(0.1) // => true
    isNumber(NaN) // => false
    isNumber(Infinity) // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是数字返回 true,否则返回 false

isObject

  • isObject(value: any): boolean
  • 检查 value 是否是一个对象

    since

    0.0.6

    example
    isObject({}) // => true
    isObject(1) // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是对象返回 true,否则返回 false

isPhone

  • isPhone(value: any): boolean
  • 检查value是否为手机号。

    since

    0.0.6

    example
    isPhone('17710067607')
    // => true

    Parameters

    • value: any

    Returns boolean

isPromise

  • isPromise(value: any): boolean
  • 检查value是否为Promise

    since

    0.0.6

    example
    isPromise(null)
    // => false

    Parameters

    • value: any

    Returns boolean

isRegExp

  • isRegExp(value: any): boolean
  • 检查 value 是否是一个正则对象。

    example
    isRegExp(/hello/) // => true
    isRegExp(new RegExp('hello')) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是正则对象返回 true,否则返回 false

isString

  • isString(value: any): boolean
  • 检查 value 是否是一个字符串

    since

    0.0.6

    example
    isString('') // => true
    isString('hello') // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是字符串返回 true,否则返回 false

isSymbol

  • isSymbol(value: any): boolean
  • 检查 value 是否是原始 Symbol 或者对象。

    since

    0.6.1

    example
    isSymbol(Symbol.iterator);
    // => true
    isSymbol('abc');
    // => false

    Parameters

    • value: any

      要检查的值

    Returns boolean

    如果 value 为一个symbol,那么返回 true,否则返回 false

isUndefined

  • isUndefined(value: any): boolean
  • 检查 value 是否等于 undefined

    since

    0.0.6

    example
    isUndefined(undefined) // => true
    isUndefined(void 0) // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    valueundefined 返回 true,否则返回 false

isUrl

  • isUrl(value: any): boolean
  • 检查 value 是否是一个Url

    since

    0.0.6

    example
    isUrl('') // => false
    isUrl('www.baidu.com') // => true

    Parameters

    • value: any

      要检查的值

    Returns boolean

    value 是字符串返回 true,否则返回 false

urlToList

  • urlToList(url: string): string[]
  • 转换url为数组

    since

    0.0.5

    example
    urlToList(test)
    // => ['/test']
    
    urlToList(/admin/user)
    // => ['/test', '/test/user']

    Parameters

    • url: string

      string

    Returns string[]

Object literals

Const defaultOptions

defaultOptions: object

complete

complete: false = false

lang

lang: "cn" = "cn"

outSymbol

outSymbol: true = true

tenMin

tenMin: false = false

ww

ww: true = true

Legend

  • Module
  • Object literal
  • Variable
  • Function
  • Function with type parameter
  • Index signature
  • Type alias
  • Type alias with type parameter
  • Enumeration
  • Enumeration member
  • Property
  • Method
  • Interface
  • Interface with type parameter
  • Constructor
  • Property
  • Method
  • Index signature
  • Class
  • Class with type parameter
  • Constructor
  • Property
  • Method
  • Accessor
  • Index signature
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Inherited accessor
  • Protected property
  • Protected method
  • Protected accessor
  • Private property
  • Private method
  • Private accessor
  • Static property
  • Static method

Generated using TypeDoc