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 的键侧对应物。
DistributiveOmit<T, K>从联合类型的每个成员中移除键,同时保留成员特有的属性。

选定标准 ​

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

参与贡献 ​

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

采用 MIT 许可证发布。