# array 工具类型

在 CodeSandBox 中尝试 (opens new window)

# GetTuple 创建元组

创建指定长度的元组

泛型参数

  • Length
    • 约束 number
    • 必须
    • 默认 0

示例

import { array } from "typescript-lodash"

type Result1 = array.GetTuple<5> // [CanStringified, unknown, unknown, unknown, unknown]

# ArraySet 修改值

将元组类型中给定索引的类型修改为新类型

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Index

    • 约束 number
    • 必须
    • 注:给定需要修改类型的索引
  • Value

    • 约束 any
    • 必须
    • 注:新的类型

示例

import { array } from "typescript-lodash"

type Result1 = array.ArraySet<[0, 1], 0, 1> // [1, 1] 

# TupleToUnion 元组转联合类型

从元组类型构造联合类型

泛型参数

  • T
    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.TupleToUnion<[0, 1]> // 0 | 1

# Pop 去除最后一位

去除元组类型中最后一个类型

泛型参数

  • T
    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Pop<[0, 1]> // [0]

# Shift 去除第一位

去除元组类型中第一个类型

泛型参数

  • T
    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Shift<[0, 1]> // [1]

# UnShift 在前面插入

在元组类型前面插入一个类型

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Item

    • 约束 any
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.UnShift<[0, 1], -1> // [-1, 0, 1]

# Push 在后面插入

在元组类型后面插入一个类型

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Item

    • 约束 any
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Push<[0, 1], 2> // [0, 1, 2]

# Concat 拼接元组

合并两个元组类型

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • R

    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Concat<[0, 1], [2]> // [0, 1, 2]

# Join 元组转字符串

将元组类型转化为字符串类型

约束说明

CanStringifiedstring 工具类型 - CanStringified 约束

泛型参数

  • T

    • 约束 CanStringified[]
    • 必须
  • SplitStr

    • 约束 CanStringified
    • 必须
    • 默认 ""
    • 注:分隔每个类型的子串

示例

import { array } from "typescript-lodash"

type Result1 = array.Join<[0, 1], ","> // "0,1"

# Every 校验每一个都符合

元组类型中,每个类型是否都符合校验

如果是,则得到类型 true,否则得到类型 false

元组类型的长度为 0 时,会直接得到类型 false

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Check

    • 约束 any
    • 必须
    • 默认 ""
    • 注:用于校验元组中的类型是否符合其的约束

示例

import { array } from "typescript-lodash"

type Result1 = array.Every<[0, 1], number> // true

type Result2 = array.Every<[], number> // false

type Result3 = array.Every<[1, "2"], number> // false

# Some 校验有一个符合

元组类型中,是否存在符合校验的类型

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Check

    • 约束 any
    • 必须
    • 默认 ""
    • 注:用于校验元组中是否存在符合其约束的类型

示例

import { array } from "typescript-lodash"

type Result1 = array.Some<[0, 1], number> // true

type Result2 = array.Some<[], number> // false

type Result3 = array.Some<[1, "2"], number> // true

# Fill 填充元组

以一个类型填充元组

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • F

    • 约束 any
    • 必须
    • 默认 undefined
    • 注:用于填充的类型

示例

import { array } from "typescript-lodash"

type Result1 = array.Fill<[0, 1], 0> // [0, 1]

# Filter 过滤

在元组中过滤出符合给定约束的类型并返回新元组

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须
    • 注:用于填充的类型
  • Strict

    • 约束 boolean
    • 必须
    • 默认 false
    • 注:严格模式,在该模式下,类型必须一模一样才能通过校验,如类型 any 不能分配给类型 1

示例

import { array } from "typescript-lodash"

type Result1 = array.Filter<[0, 1], 0> // [0]

type Result2 = array.Filter<[0, 1, 2, 3, "4"], string> // ["4"]

type Result3 = array.Filter<[any, 1, 2], any, true> // [any]

# MapWidthIndex 带索引映射

将元组类型中每个类型映射为携带索引的对象类型

泛型参数

  • T
    • 约束 unknown[]
    • 必须

结果类型

interface IndexMappedItem<Item, Index extends number, Tuple extends unknown[]> {
  item: Item
  index: Index
  tuple: Tuple
}

示例

import { array } from "typescript-lodash"

type Result1 = array.MapWidthIndex<[1, 2]> // [{ item: 1; index: 0;tuple: [1, 2]; }, { item: 2; index: 1;tuple: [1, 2]; }]

# Reverse 反转元组

将元组反转

泛型参数

  • T
    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Reverse<[]> // []

type Result2 = array.Reverse<[1, 2]> // [2, 1]

# Find 在元组中查找第一个

在元组中从左至右查找第一个符合给定类型约束的类型,如没有,则得到 null

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Find<[1, 2], 1> // 1

type Result2 = array.Find<[1, 2], 3> // null

# FindLast 在元组中查找最后一个

在元组中从左至右查找最后一个符合给定类型约束的类型,如没有,则得到 null

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.FindLast<[1, 2], 1> // 1

type Result2 = array.FindLast<[1, 2], 3> // null

# FindIndex 在元组中查找第一个获取索引

在元组中从左至右查找第一个符合给定类型约束的类型,如果有,得到其索引,如没有,则得到 -1

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须
  • Strict

    • 约束 boolean
    • 必须
    • 默认 false
    • 注:同 array.Filter<T, C, Stirct>

示例

import { array } from "typescript-lodash"

type Result1 = array.FindIndex<[1, 2], 1> // 0

type Result2 = array.FindIndex<[1, 2], 3> // -1

# FindLastIndex 在元组中查找最后一个获取索引

在元组中从左至右查找最后一个符合给定类型约束的类型,如果有,得到其索引,如没有,则得到 -1

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须
  • Strict

    • 约束 boolean
    • 必须
    • 默认 false
    • 注:同 array.Filter<T, C, Stirct>

示例

import { array } from "typescript-lodash"

type Result1 = array.FindLastIndex<[1, 2], 1> // 0

type Result2 = array.FindLastIndex<[1, 2], 3> // -1

# Flat 扁平化

将元组扁平化

泛型参数

  • T
    • 约束 unknown[]
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Flat<[1, [2]]> // [1, 2]

type Result2 = array.Flat<[1, [2, [3]]]> // [1, 2, [3]]

# Includes 是否存在

在元组中查找符合给定类型约束的类型

如果有,则得到 true,否则得到 false

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • C

    • 约束 any
    • 必须

示例

import { array } from "typescript-lodash"

type Result1 = array.Includes<[1, "2", 3], string> // true

type Result2 = array.Includes<[1], string> // false 

# Slice 截取元组

从给定的元组类型中,按照给定的起始索引和结束索引截取元组

泛型参数

  • T

    • 约束 unknown[]
    • 必须
  • Start

    • 约束 number
    • 必须
    • 注:指定的起始索引,需为大于等于 0 的整数
  • End

    • 约束 number
    • 必须
    • 注:指定的结束索引,需为大于等于 0 的整数

示例

import { array } from "typescript-lodash"

type Result1 = array.Slice<[1, 2, 3], 0, 1> // [1]

type Result2 = array.Slice<[1, 2, 3], 0, 0> // []

type Result3 = array.Slice<[1, 2, 3], 1, 0> // []

type Result4 = array.Slice<[1, 2, 3], 1, 6> // [1, 2, 3]

# Sort 排序

对给定的元组按从小到大进行排序

注意

该元组类型排序工具类型有明显的边界限制,最多仅支持长度为2的元组的排序

泛型参数

  • T
    • 约束 number[]
    • 必须
    • 注:元组中每一项都必须为非负整数类型

示例

import { array } from "typescript-lodash"

type Result = array.Sort<[2, 1]> // [1, 2]

# SortMany 排序

对给定的元组按从小到大进行排序,比 array.Sort 支持更多项

见此PullRequest (opens new window)

泛型参数

  • T
    • 约束 number[]
    • 必须
    • 注:元组中每一项都必须为非负整数类型

示例

import { array } from "typescript-lodash"

type Result = array.SortMany<[2, 1, 3, 50, 1]> // [1, 1, 2, 3, 50]
最后更新时间: 12/6/2022, 4:26:59 AM