TypeScript 面试题
按难度分为基础、进阶、高级。每道题附参考答案与评分要点。
一、基础题
1. TypeScript 和 JavaScript 有什么关系?它的核心优势是什么?基础
2. `interface` 和 `type` 有什么区别?基础
3. `any`、`unknown`、`never` 的区别?基础
4. 什么是泛型?写一个实际应用的例子。基础
5. TypeScript 中的类型推断是什么?什么情况下需要显式注解?基础
6. `readonly` 和 `const` 有什么区别?基础
7. 如何实现可选属性?`?` 和 `undefined` 有什么区别?基础
二、进阶题
8. 什么是泛型约束?写一个带约束的泛型函数。进阶
9. 解释 `keyof`、`typeof`、`in`、`as` 在类型系统中的作用。进阶
10. 什么是映射类型?手写 `Partial<T>`、`Readonly<T>`、`Pick<T, K>`。进阶
11. 解释条件类型,并手写 `IsArray<T>`、`Extract<T, U>`。进阶
12. 什么是 `infer`?用它实现 `ReturnType<T>` 和 `Parameters<T>`。进阶
13. 解释 discriminated union(可辨识联合),并说明其优势。进阶
14. 如何处理第三方库没有类型声明的问题?进阶
三、高级题
15. 解释 TypeScript 的协变、逆变、双向协变和不变,并举例子。深入
16. 什么是类型体操?请实现 `TupleToUnion<T>`、`DeepReadonly<T>`。深入
17. 如何设计一个类型安全的前端 API 请求层?深入
18. 解释 `declare`、`namespace`、`module` 的区别与使用场景。深入
19. Vue3 和 React 中是如何利用 TypeScript 类型系统的?深入
20. TypeScript 编译配置 `strict: true` 会开启哪些检查?实际项目中如何取舍?深入
21. `satisfies` 与类型注解 `:T`、类型断言 `as T` 有什么区别?深入
22. 什么是 Branded Type?它解决了什么问题?深入
23. 如何优化大型 TypeScript 项目的编译性能?深入
面试准备建议
- 手写工具类型:Partial、Readonly、Pick、Omit、ReturnType、Parameters、Exclude、Extract。
- 理解泛型约束、条件类型、infer、映射类型。
- 准备项目案例:说明 TS 如何帮助你发现 bug 或安全重构。
- 类型体操量力而行,面试中如果问到,先写简单版本,再逐步优化。
领域编号:F02 TypeScript
最后更新:2026-06-24