# 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 元组转字符串
将元组类型转化为字符串类型
约束说明
CanStringified
见 string 工具类型 - 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]