【前端高频面试题】 - TypeScript 篇

【前端高频面试题】—— TypeScript 篇(2025-2026 最新趋势版)

以下是目前大厂和中高级前端岗位最常问的 TypeScript 面试题,按出现频率和难度从高到低排序,涵盖基础、进阶、工程化、类型体操等多个维度。

基础 & 核心概念(几乎必问)

  1. TypeScript 和 JavaScript 的主要区别是什么?TypeScript 的优势和劣势分别有哪些?
  2. type 和 interface 有什么区别?什么场景下应该用哪个?
  3. 什么是类型推断(Type Inference)?举几个常见的类型推断场景。
  4. const 和 readonly 的区别?什么时候用 readonly?
  5. 什么是类型兼容性(Type Compatibility)?结构类型系统和标称类型系统有什么区别?
  6. any、unknown、never 三者的区别和使用场景分别是什么?
  7. 泛型(Generics)是什么?为什么需要泛型?写出几个常见的泛型工具类型的使用场景。

中级 & 常用高级类型(非常高频)

  1. extends 在 TypeScript 中有几种含义?分别是什么?
  2. 条件类型(Conditional Types)是什么?infer 关键字怎么用?
  3. 分布式条件类型(Distributive Conditional Types)是什么?什么时候会触发分布式?
  4. keyof、typeof、in、as const 这几个关键字分别在什么场景下使用?
  5. 请手写以下几个高频工具类型(至少说出思路)
    • Partial
    • Required
    • Pick<T, K>
    • Omit<T, K>
    • Exclude<T, U>
    • Extract<T, U>
    • NonNullable
    • ReturnType
    • Parameters
    • ConstructorParameters
    • InstanceType
  6. 如何实现一个深度 Partial(DeepPartial)?

进阶 & 类型体操(中高级必考)

  1. 如何约束泛型参数必须是某个类型的 key?(keyof)
  2. 如何写一个类型,让它接收一个对象类型,返回这个对象所有值的联合类型?
  3. 如何实现一个类型 Get<T, K>,可以支持多级路径(如 Get<User, ‘address.street’>)?
  4. 什么是映射类型(Mapped Types)?如何利用映射类型实现一个类型反转(key 和 value 互换)?
  5. 如何实现一个类型 IsEqual<T, U>,判断两个类型是否完全相等?(考虑分布式)
  6. 如何写一个类型,让它把一个联合类型转成交叉类型?(Union to Intersection)
  7. 模板字面量类型(Template Literal Types)在 4.1+ 版本有什么典型应用场景?

工程 & 实际应用(大厂偏爱)

  1. 在项目中如何更好地使用 TypeScript?(最佳实践角度)
  2. @ts-ignore、@ts-expect-error、@ts-nocheck、@ts-check 分别是什么意思?使用场景和优先级?
  3. declare 关键字有什么作用?什么时候需要用 declare?
  4. 如何给第三方没有类型定义的库写类型声明文件(.d.ts)?
  5. 如何处理 React 中常见的类型问题?
    • FC vs FunctionComponent
    • PropsWithChildren
    • useRef 的泛型
    • forwardRef + useImperativeHandle 的类型
    • event 类型(React.MouseEvent、React.ChangeEvent 等)
  6. TypeScript 如何实现函数重载(Function Overloading)?
  7. const enum 和普通 enum 的区别?tree-shaking 的时候有什么影响?
  8. satisfies 操作符(4.9+)有什么用?举例说明。

类型体操 & 难题(资深/难题)

  1. 实现一个类型 Flatten,把多维数组展平为一维
  2. 实现一个类型 Mutable,把所有 readonly 属性变成可变
  3. 实现一个类型 DeepReadonly,深度 readonly
  4. 实现一个类型 Diff<T, U>,找出 T 中不在 U 中的属性
  5. 实现一个类型 PromiseAll 的类型定义(类似 Promise.all 的类型)
  6. 实现一个类型 Last,获取元组最后一个元素类型
  7. 实现一个类型 TupleToObject,把元组转成对象类型(key 和 value 相同)

总结:面试准备建议(2025-2026 版)

如果你正在准备面试,可以告诉我你现在的水平(初级/中级/高级)或者你最想深入的几个题,我可以:

  • 给你详细答案 + 代码示例
  • 帮你模拟面试追问
  • 提供更难的体操题

你想先看哪几道题的详细解析?或者直接来一套模拟面试?

Read more

Z-Image-Turbo vs Midjourney:免费本地部署的优势在哪?

Z-Image-Turbo vs Midjourney:免费本地部署的优势在哪? 技术选型背景:AI图像生成的两种范式 近年来,AI图像生成技术迅速发展,Midjourney 作为全球领先的云端文生图服务,凭借其卓越的艺术表现力和易用性,成为设计师、艺术家广泛使用的工具。然而,随着企业对数据隐私、定制化能力与成本控制的需求日益增强,本地化部署的开源模型开始崭露头角。 阿里通义实验室推出的 Z-Image-Turbo 模型,由开发者“科哥”基于 DiffSynth Studio 二次开发并封装为 WebUI,实现了在消费级显卡上快速推理(1024×1024 图像约15秒生成),支持中文提示词、本地运行、无需订阅费用——这标志着一种全新的 AI 图像生成范式正在兴起。 本文将从 部署方式、使用成本、数据安全、可控性、扩展能力 五个维度,深入对比 Z-Image-Turbo 与 Midjourney 的核心差异,并揭示为何“

【花雕动手做】适合机器人底盘的三种规格铝合金麦克纳姆轮

【花雕动手做】适合机器人底盘的三种规格铝合金麦克纳姆轮

为搭建一套可灵活切换、多负载、多场景的全向移动机器人底盘,我陆续收集了共20 只铝合金麦克纳姆轮,覆盖三种主流成熟规格:75mm、100mm、127mm。这批轮子均为铝合金轮毂 + PU 耐磨小轮 + 内置轴承结构,强度高、寿命长、噪音低,非常适合教学演示、竞赛小车、中型 AGV、实验底盘等用途。 一、75mm 铝合金麦克纳姆轮是小型创客 / 教学机器人实现全向移动的主流选择,核心优势是铝合金轮毂刚性高、适配 4–8mm 电机轴,四轮套装常见动态负载15–30kg,适合搭载 Arduino/ESP32 的移动底盘与教学平台。 1、核心规格(主流创客级,以 YFROBOT 与 TZ-MW75 为例) 2、关键选型要点 (1)安装接口 优先选带联轴器的套装(4–

国内如何升级GitHub Copilot到专业版

国内如何升级GitHub Copilot到专业版

国内外的AI编程工具我用过很多,用的时间比较长的是Cursor,后来Cursor在国内不能用了,就又回去试了一下GitHub Copilot,结果被惊艳到了,在VS Code里用起来很丝滑,体验很好,感觉VS Code团队在AI编程这块上真是下功夫了,现在其体验已经不输Cursor。 我一直是VS Code的粉丝,感觉还是原生的VS Code用起来最舒服,现在VS Code里的Copilot体验已经做的很好,就没有理由再用其他替代编辑器了。 VS Code里的Copilot每月有一定的免费额度,用完之后就需要开通专业版才能继续使用。我用完免费额度之后,已经被其良好的体验所打动,就想升级到专业版,但是如何付费成了问题。在网上搜了一下,说是国内的信用卡不能用,而之前好用的wildcard虚拟信用卡服务现在也停了,试了一下网友推荐的胡桃卡,试了好几次也没有支付成功,还被扣了很多手续费。 现在还有什么方式能支付升级到copilot专业版呢? 后来发现GitHub Copilot升级页面上的支付方式那里也支持paypal,就在Payment method那里,credit card旁边有

VSCode Github Copilot使用OpenAI兼容的自定义模型方法

VSCode Github Copilot使用OpenAI兼容的自定义模型方法

背景 VSCode 1.105.0发布了,但是用户最期待的Copilot功能却没更新!!! (Github Copilot Chat 中使用OpenAI兼容的自定义模型。) 🔥官方也关闭了Issue,并且做了回复,并表示未来也不会更新这个功能: “实际上,这个功能在可预见的未来只面向内部人员开放,作为一种“高级”实验功能。是否实现特定模型提供者的功能,我们交由扩展作者自行决定。仅限内部人员使用可以让我们快速推进,并提供一种可能并非始终百分之百完善,但能够持续改进并快速修复 bug 的体验。如果这个功能对你很重要,我建议切换到内部版本 insider。” 🤗 官方解决方案:安装VSCode扩展支持 你们完全不用担心只需要在 VS Code 中安装扩展:OAI Compatible Provider for Copilot 通过任何兼容 OpenAI 的提供商驱动的 GitHub Copilot Chat,使用前沿开源大模型,如 Kimi K2、DeepSeek