Skip to content

es-toolkit/types

es-toolkit/types 是一个汇集了 TypeScript 未内置提供的编译期类型工具的模块。它是一个不含任何运行时代码的仅声明(declaration-only)模块,因此你只导入类型,而不是值。

typescript
import type { DeepPartial, ValueOf } from 'es-toolkit/types';

包含的类型

我们只挑选了那些因为 TypeScript 没有内置、你不得不每次手写的类型。

类型说明
ValueOf<T>创建对象所有值类型的联合。keyof 的值版本。
Simplify<T>将交叉类型或映射类型展开为单个易读的对象类型。
Writable<T>移除所有属性上的 readonly。内置 Readonly 的逆操作。
NonEmptyArray<T>至少包含一个元素的数组。
DeepPartial<T>递归地将包括嵌套对象在内的所有属性变为可选。
DeepReadonly<T>递归地将包括嵌套对象在内的所有属性变为 readonly
IsEqual<A, B>判断两个类型是否完全相同。
PrimitiveJavaScript 中所有原始值的联合。
JSONValueJSON.parse 能够产生的任何值。
UnknownRecord键和值都未知的对象。用它代替 {}
EmptyObject没有任何属性的对象。与 isEmptyObject 相对应。
SetOptional<T, K>把指定的键变为可选。相当于按键生效的内置 Partial
SetRequired<T, K>把指定的键变为必填。相当于按键生效的内置 Required
ToCamelCaseKeys<T>递归地将所有键转换为驼峰命名法。toCamelCaseKeys 的返回类型。
ToSnakeCaseKeys<T>递归地将所有键转换为蛇形命名法。toSnakeCaseKeys 的返回类型。
ToPascalCaseKeys<T>递归地将所有键转换为帕斯卡命名法。toPascalCaseKeys 的返回类型。
ToKebabCaseKeys<T>递归地将所有键转换为短横线命名法。toKebabCaseKeys 的返回类型。
ToConstantCaseKeys<T>递归地将所有键转换为常量命名法。toConstantCaseKeys 的返回类型。
Merge<T, S>把一个对象类型深度合并进另一个对象类型的结果。merge 的返回类型。
ObjectKeys<T>Object.keys 返回的形式创建键的联合。ValueOf 的键侧对应物。

选定标准

我们没有添加 TypeScript 已经提供的东西。如果原生已有类似的(PartialOmitNonNullable 等),用它更好——我们只填补真正缺失的部分。填补时也会让它与原生类型保持一致。例如 ValueOfkeyof 相对应。

参与贡献

如果这里没有你需要的类型,欢迎随时提交 issue 或直接贡献。贡献时,如果能一并说明该类型在什么场景下需要是多常用的模式,将对依据上述选定标准进行判断有很大帮助。

采用 MIT 许可证发布。