PrimitiveType
基本类型,由number
、string
、boolean
、undefined
、null
、bigint
、symbol
组成。
Added in v0.0.1
Source
export type PrimitiveType =
| undefined
| null
| number
| string
| boolean
| bigint
| symbol
NumberString
由数字组成的字符串。
Added in v0.0.1
Source
export type NumberString = `${number}`
ObjectLike
非函数对象。
Added in v0.0.1
Source
export type ObjectLike = object & { call?: never; [x: PropertyKey]: any }
ExtractUnion
从元组中提取联合类型。
Added in v0.0.1
Source
export type ExtractUnion<T extends readonly string[]> = {
[K in keyof T]: T[K]
}[number]
KeyOrIndex
从形如 [${number}] 或 ${number} 的字符串中提取数字。其他情况则返回原始字符串。
Added in v0.0.1
Source
export type KeyOrIndex<T extends string> = T extends
| `[${infer D extends number}]`
| `${infer D extends number}`
? D
: T
Tail
获取元组类型最后一个元素。
Added in v0.0.1
Source
export type Tail<T extends readonly any[]> = T extends readonly [
...any[],
infer L
]
? L
: never
Head
获取元组类型第一个元素。
Added in v0.0.1
Source
export type Head<T extends readonly any[]> = T extends readonly [
infer L,
...any[]
]
? L
: never
Edge
获取元组T
首端或者末端的元素,由类型D
决定。
Added in v0.0.1
Source
export type Edge<
T extends readonly any[],
D = 'left' | 'right'
> = D extends 'left' ? Head<T> : Tail<T>
EdgeReverse
和Edge
类似,但是D
取值'left'
或者'right'
时效果反过来。
Added in v0.0.1
Source
export type EdgeReverse<
T extends readonly any[],
D = 'left' | 'right'
> = D extends 'right' ? Head<T> : Tail<T>
EmptyOrParameters
返回函数的参数值类型,若非函数返回never[]
类型。
Added in v0.0.1
Source
export type EmptyOrParameters<T> = T extends (...args: any[]) => any
? Parameters<T>
: never[]
EmptyOrReturnType
返回函数的返回值类型,若非函数返回void
类型。
Added in v0.0.1
Source
export type EmptyOrReturnType<T> = T extends (...args: any[]) => any
? ReturnType<T>
: void
WithFallback
返回函数 T
的返回值类型,如果是 null
或者 undefined
则返回默认值类型 R
。
Added in v0.0.2
Source
export type WithFallback<T extends (...args: any[]) => any, R> =
ReturnType<T> extends undefined | null ? R : ReturnType<T>
LiteralStringWithFallback
当字符串类型 T
太宽泛(例如 string
)时,此类型会提供一个默认字符串值 R
。
它可以确保类型安全,在给配置对象或者可选参数设置默认值时非常有用。
Added in v0.0.2
Source
export type LiteralStringWithFallback<T extends string, R extends string> = T &
R extends never
? T
: R
MappedTypeByKeyOrIndex
根据输入的字符串或数字索引 T
来生成普通对象或数组类型,该索引指向类型 V
,类型 O
控制值是否可选。
Added in v0.0.2
Source
export type MappedTypeByKeyOrIndex<
T extends string,
V,
O extends boolean = false
> =
KeyOrIndex<T> extends string
? O extends false
? { [P in T]: V }
: { [P in T]?: V }
: O extends false
? unknown[] & { [P in KeyOrIndex<T>]: V }
: unknown[] & { [P in KeyOrIndex<T>]?: V }
DeepMappedTypeByKeyOrIndex
递归地解析字段路径 T
并创建嵌套普通对象或数组,它可以解析类似 "data.[0].name"
这样的嵌套路径字符串,路径末端的字段指向值 V
。O
控制值是否可选。
在基于字符串模板创建复杂的嵌套类型时非常有用。
Added in v0.0.2
Source
export type DeepMappedTypeByKeyOrIndex<
T extends string,
V,
O extends boolean = false
> = T extends `[${infer Key extends number}][${infer Rest}`
? MappedTypeByKeyOrIndex<`${Key}`, DeepMappedTypeByKeyOrIndex<`[${Rest}`, V>>
: T extends `${infer Key}[${infer Rest}`
? MappedTypeByKeyOrIndex<
`${Key}`,
DeepMappedTypeByKeyOrIndex<`[${Rest}`, V>
>
: T extends `[${infer Key extends number}].${infer Rest}`
? MappedTypeByKeyOrIndex<`${Key}`, DeepMappedTypeByKeyOrIndex<Rest, V>>
: T extends `${infer Key}.${infer Rest}`
? MappedTypeByKeyOrIndex<`${Key}`, DeepMappedTypeByKeyOrIndex<Rest, V>>
: MappedTypeByKeyOrIndex<T, V, O>
DataUnit
DataUnit
类型表示数据大小的不同单位。
Added in v0.0.2
Source
export type DataUnit =
| 'bit'
| 'B'
| 'KB'
| 'MB'
| 'GB'
| 'TB'
| 'PB'
| 'EB'
| 'ZB'
| 'YB'