TypeScript 已成为现代前端开发的标配,尤其在 React、Vue、Angular 等框架中,几乎是大厂必考点。当前面试趋势更注重类型安全、高级类型工具、实际项目应用以及 tsconfig 配置细节。以下精选高频题,分为基础、中级、高级,并附详细解答和代码示例。
基础篇:理解 TS 核心价值
什么是 TypeScript?它与 JavaScript 的区别是什么? TypeScript 是 JavaScript 的超集(superset),由 Microsoft 开发,最终编译成纯 JS 运行。 主要区别在于:
- TS 支持静态类型检查,能在编译时捕获错误;JS 是动态类型,错误往往在运行时暴露。
- TS 拥有接口、泛型、枚举、装饰器等面向对象特性。
- TS 需要编译(tsc),JS 可直接运行。
- TS 能显著提升代码可维护性和 IDE 智能提示,但会略微增加学习成本。
为什么大厂前端项目都要用 TypeScript?
- 类型安全:编译时发现拼写错误或类型不匹配,减少运行时 bug。
- 更好重构:IDE 支持重命名、跳转、自动补全,改动更放心。
- 团队协作:类型即文档,明确接口契约。
- 生态支持:React/Vue/Angular 官方均推荐 TS。
- 大型项目必备:代码规模大时,纯 JS 容易失控。
TypeScript 的基本类型有哪些?
原始类型包括 boolean、number、string、null、undefined、symbol、bigint、void。
对象类型涵盖 object、array、元组(tuple)、枚举(enum)。
特殊类型如 any(任意,关闭检查,不推荐)、unknown(未知,安全版 any)、never(永不返回)。
any、unknown、never 的区别?
| 类型 | 描述 | 使用场景 | 安全性 |
|---|---|---|---|
| any | 任意类型,关闭类型检查 | 迁移旧 JS 项目、临时绕过 | 低 |
| unknown | 未知类型,必须先类型收窄 | API 返回不确定类型 | 高 |
| never | 永不存在的值(如抛错函数) | 类型推断的底部类型 | - |
示例:
let val: unknown = 'hello';
if (typeof val === 'string') {
// 类型收窄
console.log(val.toUpperCase());
}

