Project Icon

ts-essentials

TypeScript类型工具集简化类型安全编程

ts-essentials提供了丰富实用的TypeScript类型工具,包括基础类型、工具类型、深度包装类型和键类型等。这些工具可简化类型安全代码的编写,帮助开发者更高效地处理复杂类型操作。项目支持最新TypeScript版本,并通过启用strictNullChecks确保严格类型检查。

ts-essentials

ts-essentials

所有必备的 TypeScript 类型集于一处 🤙

版本 下载量 构建状态 Telegram 软件许可 codechecks.io

安装

npm install --save-dev ts-essentials

👉 我们需要 typescript>=4.5。如果你需要支持旧版本的 TS,请查看TypeScript 依赖表

👉 由于我们希望类型更加严格,我们要求在你的项目中启用 strictNullChecks

API

ts-essentials 是一组高质量、实用的 TypeScript 类型,可以让编写类型安全的代码变得更加容易。

基础类型

实用类型

  • AsyncOrSync<Type> - 构造一个 TypePromiseLike<Type> 的类型
  • AsyncOrSyncType<Type> - 解包 AsyncOrSync 类型
  • Dictionary<Type, Keys?> - 构造一个必需的对象类型,其属性键为 Keys(默认为 string),属性值为 Type
  • Merge<Object1, Object2> - 通过选取 Object1Object2 的所有属性来构造类型。当属性键相同时,Object2 的属性值会覆盖 Object1 的属性值
  • MergeN<Tuple> - 通过递归地使用 Merge 类型合并元组 Tuple 中的对象来构造类型
  • Newable<ReturnType> - 构造一个类类型,其构造函数的返回类型为 ReturnType
  • NonNever<Type> - 通过选取 Type 中所有值不等于 never 的属性来构造类型
  • OmitProperties<Type, Value> - 通过选取 Type 中所有属性并移除值等于 Value 的那些属性来构造类型
  • Opaque<Type, Token> - 构造一个类型,它是 Type 的子集,带有指定的唯一标记 Token
  • PathValue<Type, Path> - 为类型 Type 和路径 Path 构造路径值
  • Paths<Type> - 通过选取类型 Type 的所有可能路径来构造联合类型
  • PickProperties<Type, Value> - 通过选取 Type 中所有值等于 Value 的属性来构造类型
  • SafeDictionary<Type, Keys?> - 构造一个可选的对象类型,其属性键为 Keys(默认为 string),属性值为 Type
  • UnionToIntersection<Union> - 从联合类型 Union 构造交叉类型
  • ValueOf<Type> - 为类型 Type 构造一个类型,对于原始类型等于原始值,对于数组等于数组元素,对于函数等于函数返回类型,对于对象等于对象属性值
  • XOR<Type1, Type2, Type3?, ..., Type50?> - 构造一个类型,它可以分配给 Type1Type2,但不能同时分配给两者。从 ts-essentials@10 开始,它支持最多 50 个泛型类型。

标记包装类型

  • MarkOptional<Type, Keys> - 通过选取 Type 中的所有属性来构造类型,其中 Keys 属性被设置为可选,意味着它们不是必需的
  • MarkReadonly<Type, Keys> - 通过选取 Type 中的所有属性来构造类型,其中 Keys 属性被设置为 readonly,意味着它们不能被重新赋值
  • MarkRequired<Type, Keys> - 通过选取 Type 中的所有属性来构造类型,其中 Keys 属性被设置为必需
  • MarkWritable<Type, Keys> - 通过选取 Type 中的所有属性来构造类型,其中 Keys 属性移除 readonly 修饰符,意味着它们可以被重新赋值

深度包装类型

  • Buildable<Type> - 通过结合 DeepPartialDeepWritable 构造一个类型,意味着来自 Type 类型的所有属性都被递归地设置为非 readonly 和可选的,即它们可以被重新赋值且不是必需的
  • DeepNonNullable<Type> - 通过递归地从 Type 类型中选择所有属性并从所有属性中排除 nullundefined 值来构造一个类型。要在一个层级上使属性非空,请使用 NonNullable<Type>
  • DeepNullable<Type> - 通过递归地从 Type 类型中选择所有属性并为所有属性包含 null 值来构造一个类型
  • DeepOmit<Type, Filter> - 通过从 Type 类型中选择所有属性并移除在 Filter 类型中值为 nevertrue 的属性来构造一个类型。如果您希望 Filter 类型根据 Type 的结构进行验证,请使用 StrictDeepOmit<Type, Filter>
  • DeepPartial<Type> - 通过递归地从 Type 类型中选择所有属性并将它们设置为可选来构造一个类型,意味着它们不是必需的。要在一个层级上使属性可选,请使用 Partial<Type>
  • DeepPick<Type, Filter> - 通过从 Type 类型中选择一组在 Filter 类型中属性值为 nevertrue 的属性来构造一个类型。如果您希望 Filter 类型根据 Type 的结构进行验证,请使用 StrictDeepPick<Type, Filter>
  • DeepReadonly<Type> - 通过递归地从 Type 类型中选择所有属性并设置 readonly 修饰符来构造一个类型,意味着它们不能被重新赋值。要在一个层级上使属性 readonly,请使用 Readonly<Type>
  • DeepRequired<Type> - 通过递归地从 Type 类型中选择所有属性并将其设置为必需来构造一个类型。要在一个层级上使属性必需,请使用 Required<Type>
  • DeepUndefinable<Type> - 通过递归地从 Type 类型中选择所有属性并为所有属性包含 undefined 值来构造一个类型
  • DeepWritable<Type> - 通过递归地从 Type 类型中选择所有属性并移除 readonly 修饰符来构造一个类型,意味着它们可以被重新赋值。要在一个层级上使属性可写,请使用 Writable<Type>
  • StrictDeepOmit<Type, Filter> - 通过从 Type 类型中选择所有属性并移除在 Filter 类型中值为 nevertrue 的属性来构造一个类型。Filter 类型根据 Type 的结构进行验证。
  • StrictDeepPick<Type, Filter> - 通过从 Type 类型中选择一组在 Filter 类型中属性值为 nevertrue 的属性来构造一个类型。Filter 类型根据 Type 的结构进行验证。

关键类型

  • OptionalKeys<Type> - 通过选择对象类型 Type 的所有可选属性构造一个联合类型
  • PickKeys<Type, Value> - 通过选择对象类型 Type 中所有可赋值给类型 Value 的属性构造一个联合类型
  • ReadonlyKeys<Type> - 通过选择对象类型 Type 的所有 readonly 属性构造一个联合类型,意味着它们的值不能被重新赋值
  • RequiredKeys<Type> - 通过选择对象类型 Type 的所有必需属性构造一个联合类型
  • WritableKeys<Type> - 通过选择对象类型 Type 的所有可写属性构造一个联合类型,意味着它们的值可以被重新赋值

类型检查器

  • Exact<Type, Shape> - 当类型 TypeShape 完全相同时返回 Type。否则返回 never
  • IsAny<Type> - 当类型 Typeany 时返回 true。否则返回 false
  • IsNever<Type> - 当类型 Typenever 时返回 true。否则返回 false
  • IsUnknown<Type> - 当类型 Typeunknown 时返回 true。否则返回 false
  • IsTuple<Type> - 当类型 Type 为元组时返回 Type。否则返回 never
  • NonEmptyObject<Object> - 当 Object 至少有一个键时返回 Object。否则返回 never

数组和元组

更改大小写

函数类型

实用函数

⚠️ 确保您将 ts-essentials 添加到 dependencies 中(npm install --save ts-essentials)以避免运行时错误

搜索

当某个实用类型以不同名称被人所知时,请在此处添加以便更好地搜索。

内置类型

TypeScript 提供了几种实用类型来便于常见的类型转换。这些实用工具在全局范围内可用。

  • Awaited<Type> - 这种类型旨在模拟 async 函数中的 await 操作,或 Promise 上的 .then() 方法 - 特别是它们递归解包 Promise 的方式
  • Capitalize<StringType> - 将字符串中的第一个字符转换为大写形式
  • ConstructParameters<Type> - 从构造函数类型 Type 的类型构造一个元组或数组类型
  • Exclude<UnionType, ExcludedMembers> - 通过从 UnionType 中排除所有可赋值给 ExcludedMembers 的联合成员来构造一个类型
  • Extract<Type, Union> - 通过从 Type 中提取所有可赋值给 Union 的联合成员来构造一个类型
  • InstanceType<Type> - 构造一个由 Type 中构造函数的实例类型组成的类型
  • Lowercase<StringType> - 将字符串中的每个字符转换为小写形式
  • NonNullable<Type> - 通过从 Type 中排除 null 和 undefined 来构造一个类型
  • Omit<Type, Keys> - 通过从 Type 中选取所有属性然后移除 Keys 来构造一个类型
  • Parameters<Type> - 从函数类型 Type 的参数中使用的类型构造一个元组类型
  • Partial<Type> - 构造一个类型,将 Type 的所有属性设置为可选
  • Pick<Type, Keys> - 通过从 Type 中选取属性集 Keys 来构造一个类型
  • Readonly<Type> - 构造一个类型,将 Type 的所有属性设置为 readonly,意味着构造类型的属性不能被重新赋值
  • Record<Keys, Type> - 构造一个对象类型,其属性键为 Keys,属性值为 Type
  • Required<Type> - 构造一个类型,将 Type 的所有属性设置为必需
  • ReturnType<Type> - 构造一个由函数类型 Type 参数的返回类型组成的类型
  • Uncapitalize<StringType> - 将字符串中的第一个字符转换为小写形式
  • Uppercase<StringType> - 将字符串中的每个字符转换为大写版本

TypeScript 依赖表

ts-essentialstypescript / 依赖类型
^10.0.0^4.5.0 / 可选对等
^9.4.0^4.1.0 / 可选对等
^8.0.0^4.1.0 / 对等
^5.0.0^3.7.0 / 对等
^3.0.1^3.5.0 / 对等
^1.0.1^3.2.2 / 开发
^1.0.0^3.0.3 / 开发

贡献者

感谢这些优秀的人(表情符号键):

本项目遵循all-contributors规范。 欢迎任何形式的贡献!阅读更多

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号