TypeScript 前端高频面试题精选与实战解析
TypeScript(TS)如今已是现代前端开发的标配,尤其在 React、Vue、Angular 等主流框架中,几乎是大厂面试的必考点。当前的面试趋势更看重类型安全、高级类型工具的实际应用以及 tsconfig 的配置细节。下面我整理了 20+ 道高频题,涵盖基础、进阶到高级类型体操,并附带代码示例和思路解析。
基础篇:核心概念与价值
1. TypeScript 是什么?和 JavaScript 有啥区别?
简单来说,TS 是 JS 的超集(superset),由微软开发,最终编译成纯 JS 运行。两者的核心差异在于:
- 类型检查时机:TS 在编译时进行静态类型检查,能提前捕获错误;JS 则是动态类型,错误往往在运行时才暴露。
- 特性支持:TS 原生支持接口、泛型、枚举、装饰器等面向对象特性。
- 构建流程:TS 需要编译器(tsc)处理,JS 则可直接执行。
- 维护成本:TS 虽然增加了学习曲线,但显著提升了大型项目的可维护性和 IDE 的智能提示能力。
2. 为什么大厂项目都强制用 TypeScript?
这不仅仅是跟风,而是有实实在在的好处:
- 类型安全:拼写错误或类型不匹配能在编译阶段被发现,大幅减少线上 Bug。
- 重构友好:IDE 的重命名、跳转定义、自动补全功能在 TS 下非常可靠。
- 团队协作:类型定义本身就是一种文档,明确了模块间的接口契约。
- 生态成熟:React/Vue/Angular 官方均强烈推荐 TS。
- 规模效应:当代码量达到一定规模,纯 JS 容易失控,TS 能有效约束边界。
3. 基本类型有哪些?
包括原始类型(boolean, number, string, null, undefined, symbol, bigint, void)、对象类型(object, array, tuple, enum)以及特殊类型(any, unknown, never)。
4. any、unknown、never 到底怎么选?
| 类型 | 描述 | 使用场景 | 安全性 |
|---|---|---|---|
| any | 任意类型,关闭检查 | 迁移旧项目或临时绕过 | 低(慎用) |
| unknown | 未知类型,需先收窄 | API 返回不确定类型 | 高(推荐) |
| never | 永不存在的值 | 抛出异常的函数或底部类型 | - |
看个实际例子,unknown 比 any 更安全:
let : = ;
( val === ) {
.(val.());
}

