类型系统深入:TypeScript高级类型编程

TypeScript高级类型通过交叉、联合、条件、映射及递归等特性,实现灵活的类型组合与逻辑判断,提升代码安全性与复用性。

类型系统深入:typescript高级类型编程

TypeScript 的类型系统远不止基础类型标注。通过高级类型特性,开发者可以构建更安全、可复用且智能的代码结构。掌握这些能力,能让你在复杂项目中游刃有余。

交叉类型与联合类型:灵活组合类型

交叉类型(&)将多个类型合并为一个,常用于混入(mixin)或扩展对象结构。

例如:type A = { name: string }; type B = { age: number }; type Person = A & B; // 拥有 name 和 age

联合类型(|)表示值可以是多种类型之一。结合类型收窄(如 typeofininstanceof),可在运行时做出安全判断。

比如:function padLeft(value: string, padding: string | number) { if (typeof padding === "number") { ... } else { ... } }

条件类型:类型层面的逻辑判断

条件类型让类型具备“if-else”能力,格式为 T extends U ? X : Y,适用于根据输入类型动态决定输出类型。

常见用途包括:过滤特定类型:type NonNullable = T extends null | undefined ? never : T; 映射不同输入:type ToArray = T extends any[] ? T : T[];

结合 infer 关键字,可以从复杂类型中提取子类型。

例如提取函数返回值:type ReturnType = T extends (...args: any[]) => infer R ? R : any;

映射类型:批量修改对象属性

映射类型基于已有类型创建新类型,通过遍历属性实现批量操作。

内置工具如:Partial:所有属性变为可选 Readonly:所有属性变为只读 Pick:从 T 中挑选部分属性 K

你也可以自定义映射规则。

比如将所有字段设为可选且可为 null:type MaybeOptional = { [P in keyof T]?: T[P] | null; };

类型递归与分布式条件类型

TypeScript 支持递归定义类型,可用于处理嵌套结构。

例如深只读类型:type DeepReadonly = { readonly [P in keyof T]: T[P] extends object ? DeepReadonly : T[P]; };

当条件类型作用于联合类型时,会自动分发到每个成员,称为“分布式条件类型”。

这意味着:type TypeName = T extends string ? "string" : T extends number ? "number" : "other"; type Result = TypeName; // 得到 "string" | "number"

基本上就这些。熟练运用这些高级类型,能让 TypeScript 成为你代码的智能助手,而不是负担。

以上就是类型系统深入:TypeScript高级类型编程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1531230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月20日 22:40:30
下一篇 2025年12月20日 22:40:39

相关推荐

发表回复

登录后才能评论
关注微信