尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

实用指南:Typescript高级类型详解

实用指南:Typescript高级类型详解
📅 发布时间:2026/6/22 5:30:37

实用指南:Typescript高级类型详解

Typescript中的高级类型主要有下面几种:

1. 联合类型 (Union Types)

type Status = "success" | "error" | "loading";
type ID = string | number;
function handleStatus(status: Status) {// status 只能是 "success", "error", "loading" 之一
}

2. 交叉类型 (Intersection Types)

interface Person {name: string;age: number;
}
interface Employee {employeeId: string;department: string;
}
type Staff = Person & Employee;
// Staff 必须同时包含 Person 和 Employee 的所有属性

3. 映射类型 (Mapped Types)

// 将所有属性变为可选
type Partial = {[P in keyof T]?: T[P];
};
// 将所有属性变为只读
type Readonly = {readonly [P in keyof T]: T[P];
};
interface User {id: number;name: string;
}
type PartialUser = Partial; // { id?: number; name?: string; }

4. 条件类型 (Conditional Types)

type IsString = T extends string ? true : false;
type A = IsString; // true
type B = IsString; // false
// 内置示例
type Exclude = T extends U ? never : T;
type Extract = T extends U ? T : never;

5. 索引访问类型 (Indexed Access Types)

interface User {id: number;name: string;address: {street: string;city: string;};
}
type UserName = User["name"]; // string
type Address = User["address"]; // { street: string; city: string; }
type UserProperties = User[keyof User]; // string | number | { street: string; city: string; }

6. 模板字面量类型 (Template Literal Types)

type EventName = "click" | "hover" | "focus";
type HandlerName = `on${Capitalize}`;
// "onClick" | "onHover" | "onFocus"
type CSSValue = `${number}px` | `${number}em` | `${number}%`;

7. 递归类型 (Recursive Types)

type Json =| string| number| boolean| null| { [key: string]: Json }| Json[];
type DeepReadonly = {readonly [P in keyof T]: T[P] extends object? DeepReadonly: T[P];
};

区别与联系

区别

类型主要用途特点
联合类型表示多个类型之一使用 `` 运算符
交叉类型合并多个类型使用 & 运算符
映射类型批量转换属性使用 in 关键字
条件类型基于条件选择类型使用三元运算符
索引访问获取特定属性类型使用 [] 语法
模板字面量字符串模式匹配使用模板字符串语法

联系与组合使用

这些高级类型经常组合使用,形成强大的类型编程能力:

// 组合使用示例
interface Product {id: number;name: string;price: number;category: "electronics" | "clothing" | "books";
}
// 获取所有字符串属性的键
type StringKeys = {[K in keyof T]: T[K] extends string ? K : never;
}[keyof T];
type ProductStringKeys = StringKeys; // "name" | "category"
// 创建动态的 getter 类型
type Getters = {[K in keyof T as `get${Capitalize}`]: () => T[K];
};
type ProductGetters = Getters;
// {
//   getId: () => number;
//   getName: () => string;
//   getPrice: () => number;
//   getCategory: () => "electronics" | "clothing" | "books";
// }

这些高级类型让 TypeScript 的类型系统变得极其强大,能够精确地描述复杂的类型关系,提供更好的类型安全和开发体验。

相关新闻

  • 2025多校CSP模拟赛1
  • AT_arc189_b [ARC189B] Minimize Sum
  • 详细介绍:netpoll性能调优:Go网络编程的隐藏利器|Go语言进阶(8)

最新新闻

  • 北京朝阳区卖黄金别乱找!盘点 2026 黄金回收合规店铺,禹竞名奢汇透明报价,快速变现 - 名奢变现站
  • 2026 沈阳通勤车租赁公司测评 企业长期班车租赁公司五家实测对比 - LYL仔仔
  • 2026 石家庄名包变现实测合集,各大商圈门店真实报价整理收藏 - 奢侈品交易观察员
  • 冷门小众腕表没人收?重庆这家渠道各类机械表通通接纳 - 讯息早知道
  • BEM技术:提升固定摄像头目标检测精度的背景嵌入记忆方法
  • 东莞闲置奢包变现,2026靠谱名包回收实体店汇总 - 名奢变现站

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号