当前位置: 首页 > news >正文

TypeScript 类型系统 ------公司项目实战 + 面试通关指南

本文目标:看完能写公司代码 + 回答常见面试问题

适合: - Vue3 / React / Node 项目开发\

  • 中级前端晋升 / 面试准备\
  • 刚转 TypeScript 的同学

一、基础类型与推断(写项目 80% 场景)

let name = 'Tom'
let age = 20
let isLogin = false

二、对象类型 ------业务模型必须写

interface User {id: stringname: stringage?: numberisAdmin: boolean
}

三、接口 & 类型别名(type)

在这里插入图片描述

interface ApiUser {id: stringname: string
}type UserRole = 'admin' | 'user' | 'tester'
//在定义一个类型,叫 UserRole
//这个类型的值 只能 是 'admin' 、'user' 或 'tester' 三个字符串之一,取其它值都会报错。
使用:let role: UserRole = 'admin'

四、函数类型

function getUser(id: string): ApiUser {return { id, name: 'Tom' }
}
type Fetcher = (url: string) => Promise<any>

id: string → 这个函数的参数 id 必须是 string
ApiUser → 这个函数返回值必须符合 ApiUser 类型

五、泛型 ------后端接口必备

interface ApiResponse<T> {code: numberdata: Tmessage?: string
}

六、联合类型 & 字面量类型

type ButtonType = 'primary' | 'danger' | 'default'

七、工具类型 ------业务最常用

类型 作用


Partial<T> 全部变可选
Required<T> 全部变必需
Pick<T,K> 挑字段
Omit<T,K> 去字段
Readonly<T> 只读
Record<K,T> 字典类型


八、keyof

keyof 是 TS 操作符,作用是获取某个类型的所有「属性名」,返回这些属性名组成的联合类型,核心用于「限制访问对象的属性只能是其自身存在的键」,避免错写属性名。

核心用法(2 句话懂)
语法:keyof 类型 → 得到该类型所有属性名的联合;
场景:配合泛型约束,限制函数 / 变量只能使用对象已有的属性名。

// 1. 定义对象类型
interface User { id: number; name: string; age: number }// 2. keyof User → 得到属性名联合:'id' | 'name' | 'age'
type UserKeys = keyof User; // 3. 配合泛型约束:只能访问 User 存在的属性
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {return obj[key]; // 不会错写属性名,TS 自动提示可选键
}// 用法(正确)
const user = { id: 1, name: "张三", age: 20 };
getProp(user, "name"); // 正确,有提示
getProp(user, "age");  // 正确// 用法(错误)
// getProp(user, "gender"); // 报错:gender 不是 User 的属性

九、常见实战类型

  • 表单类型
  • 分页类型
  • 请求参数 & 响应
  • Axios封装
  • 字面量枚举

十、面试题总结

  • TS 与 JS 区别
  • interface vs type
  • 泛型适用场景
  • Partial / Pick / Omit

🎯 总结

你已经掌握:

✅ 基础类型
✅ interface / type
✅ 函数定义
✅ 泛型
✅ 工具类型
✅ 业务模型设计


作者:ChatGPT GPT-5
用于公司项目学习与面试准备

http://www.dtcms.com/a/569347.html

相关文章:

  • 东莞网络网站建设深圳建设局网站注册结构师培训
  • 做网站推广链接该怎么做那曲地区建设局网站
  • AI研究-120 DeepSeek-OCR 从 0 到 1:上手路线、实战要点
  • 2025,5月试卷|错题笔记
  • Syslog基础详解:协议、服务器、端口和实时监控
  • rk3568-android11-wifi-aic8800
  • 东城区网站排名seo网站 动态 静态
  • 网站就业技术培训机构seo需要掌握什么技能
  • CUDA C++编程指南(4)——硬件实现
  • Nacos集群部署实战:3节点+Nginx+MySQL高可用方案
  • 深入理解五种 IO 模型与非阻塞 IO:从原理到场景选型
  • 大专生升学与职业发展路径探析:从专升本到能力进阶
  • 12. PLC与继电器控制系统的区别
  • QT项目踩坑点!!!注意
  • ECCV 即插即用 | 频域全局视野 + 先验局部细节 = SOTA级图像修复!FADformer架构全解析
  • 做网站是用ps还是ai英文网站建设教程
  • 做网站怎么兼职上海企业网络营销推广多少钱
  • OpenCV 的 BackgroundSubtractorMOG2 原理
  • 【机器学习的4种学习范式】
  • 网站客户案例app开发用什么工具
  • 蓝牙钥匙 第39次 汽车售后服务中的权限管理:维修技师临时权限、服务模式与诊断数据访问控制
  • openEuler 22.03-Docker离线安装教程
  • 统一服务入口-Gateway
  • 济南做网站的公司哪家好网站建设工作半年通报
  • 为什么要GetWorld()?
  • HBase安装配置
  • 【开题答辩实录分享】以《基于Java的校园心理咨询服务系统的设计与实现》为例进行答辩实录分享
  • 佛山网站建设的品牌2345网址导航下载安装到桌面
  • 场外衍生品系统开发实战:TRS收益互换与场外个股期权架构解析
  • 网站需求分析模板浅谈电子商务网站建设与规划