跳到主要内容

类型工具

颜色类型

类型描述
ColorEntry = [hex: string, name: string]用于构建命名颜色查找表的单条 [hex, name] 元组条目。
ColorNumber = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950所有色阶中使用的色阶权重键。
ColorSwatch { number: ColorNumber; hex: string }色系中的一个带权重色板。
ColorPalette { name: string; swatches: ColorSwatch[] }一组命名的色板集合。
ColorSwatchWithDelta extends ColorSwatch { delta: number }标注了与参考颜色之间 Delta E 距离的色板。
NearestColorPalette extends ColorPalette { nearestSwatch: ColorSwatchWithDelta; nearestLightnessSwatch: ColorSwatchWithDelta }getColorPalette 内部使用的最近色系匹配结果。
MatchedColorPalette extends ColorPalette { colorMap: Map<ColorNumber, string>; main: ColorSwatch; matched: ColorSwatch }完整生成的色系结果,以色板编号为键(main 为编号 500 的色板)。
ColorPaletteObjectcolorPalettes 数组重塑为对象形式:{ [kebab-case 名称]: { [色板编号]: 十六进制值 } }
PresetColor所有内置色系名称的 kebab-case 联合类型(例如 "red""orange"),从 colorPalettes 派生而来。

深层键

类型描述
DeepKeys<T, TDepth extends any[] = []>T 中所有点分路径属性路径的联合类型(含嵌套对象、元组和数组),最多支持 5 层深度;Date 被视为叶子节点。适用于表格 dataIndex、表单字段路径等需要类型安全的深层对象访问场景。

通用类型工具

VEF 自定义:

类型描述
Builtin = Primitive | Function | Date | Error | RegExpPartialDeep/RequiredDeep 一类递归工具类型停止递归的类型集合。
Key = string数据驱动组件中通用的选项/行键类型。
Awaitable<T> = T | Promise<T>一个值或该值的 Promise。
MaybeArray<T> = T | T[]一个值或该值的数组。
MaybeNullish<T> = T | null | undefined一个值、nullundefined
MaybeUndefined<T> = T | undefined一个值或 undefined
MaybeNull<T> = T | null一个值或 null
IsString<T> = T extends string ? true : false用于判断 T 是否为 string 的布尔类型守卫。
Not<A extends boolean>反转一个布尔字面量类型(Not<true>false)。
EmptyObject(接口)空对象类型({}),区别于 Record<string, unknown>
AnyObject = Record<keyof any, any>不限制键或值的对象类型。
RenameKey<T, TOldKey extends keyof T, TNewKey extends string>重命名对象类型的某个键,保留其值类型及其余所有键不变。
NonFunctionGuard<T> = T extends Function ? never : TT 是函数类型时解析为 never,否则解析为 T
OmitSymbol<T>从对象类型中省略所有 symbol 类型的键。

type-fest 重新导出(仅导入并配置一次,随后统一重新导出,确保每个包解析到同一版本):

类型描述
And<A, B>判断两个给定的布尔类型是否同时为 true 的布尔类型。
Or<A, B>判断两个给定的布尔类型中是否任一为 true 的布尔类型。
If<TCondition, TThen, TElse>根据 TConditiontruefalse,解析为 TThenTElse
Except<ObjectType, KeysType>类似 Omit,但只允许 ObjectType 上实际存在的键。
DistributedOmit<ObjectType, KeysType>对联合类型分发计算的 Omit,而非折叠为各成员的公共键。
DistributedPick<ObjectType, KeysType>对联合类型分发计算的 Pick,而非折叠为各成员的公共键。
HasOptionalKeys<T>判断 T 是否含有任何可选字段的布尔类型。
HasRequiredKeys<T>判断 T 是否含有任何必选字段的布尔类型。
IsAny<T>判断 T 是否为 any 的布尔类型。
IsNever<T>判断 T 是否为 never 的布尔类型。
IsNull<T>判断 T 是否为 null 的布尔类型。
IsUnknown<T>判断 T 是否为 unknown 的布尔类型。
IsUndefined<T>判断 T 是否为 undefined 的布尔类型。
IsNullable<T>判断 T 是否包含 null 的布尔类型。
IsOptional<T>判断 T 是否包含 undefined 的布尔类型。
IsEqual<A, B>判断两个给定类型是否相等的布尔类型。
IsFloat<T>判断给定数字字面量是否为浮点数(如 1.5)的布尔类型。
IsInteger<T>判断给定数字字面量是否为整数的布尔类型。
IsLiteral<T>判断 T 是否为任意字面量类型(字符串、数字、布尔值或符号)的布尔类型。
IsStringLiteral<T>判断 T 是否为 string 字面量类型的布尔类型。
IsNumericLiteral<T>判断 T 是否为 numberbigint 字面量类型的布尔类型。
IsBooleanLiteral<T>判断 T 是否为 truefalse 字面量类型的布尔类型。
IsSymbolLiteral<T>判断 T 是否为 symbol 字面量类型的布尔类型。
IsTuple<T>判断数组类型是否为固定长度的元组而非普通数组的布尔类型。
IsOptionalKeyOf<T, Key>判断 Key 是否为 T 的可选键的布尔类型。
IsRequiredKeyOf<T, Key>判断 Key 是否为 T 的必选键的布尔类型。
IsReadonlyKeyOf<T, Key>判断 Key 是否为 T 的只读键的布尔类型。
IsWritableKeyOf<T, Key>判断 Key 是否为 T 的可写(非只读)键的布尔类型。
IterableElement<TIterable>Iterable / AsyncIterable(数组、SetMap、生成器、流等)产出的元素类型。
KebabCase<S>将字符串字面量类型转换为 kebab-case
LiteralUnion<LiteralType, BaseType>由字面量类型与基础原始类型组成的联合类型,且不丢失字面量的 IDE 自动补全。
NonEmptyObject<T>至少有一个非可选键的对象类型。
NonEmptyString<T>匹配任意非空字符串字面量。
NonEmptyTuple<T>匹配任意非空元组。
OptionalKeysOf<T>提取 T 的所有可选键。
RequiredKeysOf<T>提取 T 的所有必选键。
OverrideProperties<TSource, TOverride>覆盖 TSource 的已有属性,要求每个被覆盖的键必须已经存在(比 Merge 更严格)。
PartialDeep<T>递归地将 T 的每个属性变为可选。
RequiredDeep<T>递归地将 T 的每个属性变为必选。
Primitive所有 JS 原始值类型的联合(string | number | bigint | boolean | symbol | null | undefined)。
SetOptional<T, Keys>将给定的键变为可选,T 的其余部分保持不变。
SetRequired<T, Keys>将给定的键变为必选,T 的其余部分保持不变。
SetReadonly<T, Keys>将给定的键变为只读,T 的其余部分保持不变。
SetFieldType<T, Keys, Type>改变给定键的值类型,T 的其余部分保持不变。
SetReturnType<Fn, Type>创建一个返回类型不同、但参数与 Fn 相同的函数类型。
SetParameterType<Fn, Params>创建一个参数列表不同、但返回类型与 Fn 相同的函数类型。
Simplify<T>将交叉类型/接口展平为单一对象类型,以获得更清晰的编辑器提示。
SimplifyDeep<T, ExcludeType>递归地应用 Simplify,可选地排除某些嵌套类型。

这些类型在 corecomponentsstarter 中被广泛使用。