前端高频面试题:TypeScript 篇(2026 最新版)

前端高频面试题:TypeScript 篇(2026 最新版)

TypeScript(TS)已成为现代前端开发的标配,尤其在 React、Vue、Angular 等框架中,几乎是大厂必考点。2026 年面试趋势:更注重类型安全高级类型工具实际项目应用tsconfig 配置。以下精选 20+ 高频题(基于最新大厂真题汇总),分为基础、中级、高级,并附详细解答和代码示例。建议结合项目实战记忆!

基础篇(必背,考察理解 TS 核心价值)
  1. 什么是 TypeScript?它与 JavaScript 的区别是什么?
    TypeScript 是 JavaScript 的超集(superset),由 Microsoft 开发,最终编译成纯 JS 运行。
    主要区别
    • TS 支持静态类型检查(编译时捕获错误),JS 是动态类型(运行时错误)。
    • TS 有接口、泛型、枚举、装饰器等 OOP 特性。
    • TS 需要编译(tsc),JS 直接运行。
    • TS 提升代码可维护性、IDE 智能提示,但增加学习成本。
  2. 为什么大厂前端项目都要用 TypeScript?优势有哪些?
    • 类型安全:编译时发现错误(如拼写错、类型不匹配),减少运行时 bug。
    • 更好重构:IDE 支持重命名、跳转、自动补全。
    • 团队协作:类型作为“文档”,明确接口契约。
    • 生态支持:React/Vue/Angular 官方推荐 TS。
    • 大型项目必备:代码规模大时,纯 JS 容易失控。
    • 原始类型:booleannumberstringnullundefinedsymbolbigintvoid
    • 对象类型:objectarraytuple(元组)、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());}

TypeScript 的基本类型有哪些?示例:

let isDone:boolean=false;let num:number=6;let str:string='hello';let list:number[]=[1,2,3];// 或 Array<number>let tuple:[string,number]=['hello',10];// 元组
中级篇(高频,考察实际编码能力)
    • 联合类型:string | number → 值可以是其中一种。
    • 交叉类型:TypeA & TypeB → 值必须同时满足两种类型(对象合并)。
    • typeof 检查原始类型
    • instanceof 检查实例
    • in 检查属性
    • 字面量类型守卫(===)
    • 自定义类型守卫(is 关键字)

类型收窄(Type Narrowing)有哪些方式?示例:

functionpadLeft(value:string, padding:string|number){if(typeof padding ==='number'){returnArray(padding +1).join(' ')+ value;// padding 被收窄为 number}return padding + value;}

联合类型(|)和交叉类型(&)的区别?示例:

typeA={ a:string};typeB={ b:number};typeC=A&B;// { a: string; b: number }

泛型(Generics)是什么?应用场景?
泛型允许创建可复用组件,支持类型参数化。
示例:

functionidentity<T>(arg:T):T{return arg;}let output =identity<string>('hello');// T 推断为 string

场景:数组工具、Promise、React 组件 props、Vue defineProps 等。

interface 和 type 的区别?什么时候用哪个?

特性interfacetype
定义对象是(主要用途)
支持扩展(extends)是(用 & 交叉类型)
支持声明合并是(同名接口自动合并)
可定义联合/元组
可定义原始类型别名

推荐:对象/接口用 interface(支持合并,便于扩展);联合、映射、工具类型用 type。示例:

interfaceUser{ name:string;}interfaceUser{ age?:number;}// 自动合并typeID=string|number;
高级篇(大厂深挖,考察类型体操)
    • Partial<T>:所有属性可选
    • Required<T>:所有属性必选
    • Readonly<T>:所有属性只读
    • Pick<T, K>:挑选属性
    • Omit<T, K>:排除属性
    • Record<K, T>:键为 K,值为 T 的对象
    • Exclude<T, U> / Extract<T, U>:联合类型排除/提取
  1. tsconfig.json 中哪些配置最重要?
    • target:编译目标(如 es2020)
    • module:模块系统(如 esnext/commonjs)
    • strict:开启所有严格检查(强烈推荐)
    • noImplicitAny:隐式 any 报错
    • strictNullChecks:null/undefined 严格检查
    • esModuleInterop:更好导入 commonjs 模块
    • skipLibCheck:跳过库类型检查(加速编译)

映射类型(Mapped Types)如何使用?
通过 [K in keyof T] 遍历键创建新类型。
示例:

typeOptional<T>={[PinkeyofT]?:T[P]};// 等价于 Partial<T>

条件类型(Conditional Types)是什么?
T extends U ? X : Y
示例:

typeIsString<T>=Textendsstring?'yes':'no';typeTest1= IsString<'hello'>;// 'yes'

TypeScript 的工具类型(Utility Types)有哪些常用?示例:

typeUser={ name:string; age:number};typePartialUser= Partial<User>;// { name?: string; age?: number }
实战应用题(框架相关高频)
  1. 在 React/Vue 项目中如何使用 TypeScript?
    • React:用 .tsx,定义 props 类型(interface 或 type),useState()。
    • Vue:Vue 3 + TS 用 <script setup lang="ts">,defineProps()。
  2. 如何处理第三方库没有类型定义?
    • declare module '库名'; 或安装 @types/库名(DefinitelyTyped)。
    • 极端:用 any 断言,但不推荐。
面试建议
  • 准备项目:准备一个 TS + React/Vue 的个人项目,面试时能说类型如何提升代码质量。
  • 多练类型体操:LeetCode TS 版、Type Challenges(GitHub)。
  • 关注新特性:TS 5.x 的 const type parameters、infer 改进等。

这些题覆盖了 95% 以上的大厂考察点,背熟 + 理解原理,TS 面试稳过!如果需要某题的代码演示或扩展解答,随时问我~🚀

Read more

Qt 正则表达式(QRegularExpression类)详解

Qt 正则表达式(QRegularExpression类)详解

Qt 正则表达式(QRegularExpression类)详解 * 一、正则表达式介绍 * 1、核心语法规则 * 2、实用示例 * 3、常用场景 * 4、常用正则表达式 * 5、工具推荐 * 二、 QRegularExpression类详解 * 1、核心功能 * 2、基本使用步骤 * 3、常用方法 * 4、全局匹配示例 * 5、模式选项 * 6、常见用例示例 * 6.1、验证电子邮件地址 (简化版) * 6.2、提取 URL 协议和域名 * 6.3、替换所有数字 * 7、注意事项 * 三、代码示例 * 1、效果展示 * 2、源码分享

最大无本体具身数据集开源!简智机器人联合百度百舸,加速具身智能应用落地

1.    简智机器人开源行业最大规模的无本体具身数据集 1 月 5 日,简智新创(北京)机器人科技有限公司(以下简称「简智机器人」)正式开源「RealOmni-Open DataSet」无本体具身数据集,数据集总计包含超过 10,000 小时、百万条以上的真实操作记录,是目前行业已知数据规模最大且每一项技能数据量最多的无本体开源数据集。 当前,简智机器人能够实现每日万小时以上级别的持续数据采集与处理,不断为数据集注入鲜度,并保障了其持续扩展的能力。 简智机器人专注于通用具身智能全链路解决方案,为行业提供标准化、自动化的数据流基础设施服务。近日,简智机器人完成第三轮融资,成为具身智能数据基建细分赛道融资进展最快的企业。 「RealOmni」属于无本体具身数据集,这类数据集的核心是将数据采集的源头从「机器人」转移到了「人」,采集场景多,数据真实性高。传统数据集需要工作人员操作机器人,依赖机器人本体在特定环境(如实验室等)中运行获取数据,场景与机器人传感器性能受限、且数据维度少、精准度低。而无本体数据集的采集不依赖于特定机器人硬件,工作人员通过穿戴 GenDas 无感设备,

OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)

目的 找一款window 本地ai助手,但有如下要求 1)windows一键安装,带gui界面,操作简单 2)直接操作本地文件,能生成和写入本地文件内容 3)配置token 即可,无需绑定账号登陆 测试效果 OpenCowork 可直接操作本地电脑文件,并支持接入飞书机器人应用,实现类似 OpenClaw 的电脑操作能力; 但整体更适合本地文档生成、资料整理、代码或文本批量处理等场景。相比云端 AI,在生成速度、工具能力和复杂任务支持方面仍有差距,尤其在长文档生成和多工具协作时效率与稳定性较弱,因此更适合作为本地文件处理的辅助工具,而非替代云端 AI。 OpenCowork 很多自动化能力依赖python,你可以自己升级一下python,然后让OpenCowork 检测环境是不是最新的,并升级一下; 1 安装 OpenCowork 客户端 下载地址 https://github.com/AIDotNet/OpenCowork 找右侧侧

FPGA实现MIPI协议全解析 + MIPI协议完整时序规范

FPGA实现MIPI协议全解析 + MIPI协议完整时序规范

一、MIPI协议核心基础认知 百度网盘链接:https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 提取码: 1234 包含FPGA系统学习资料,免费分享 1. MIPI协议定义与核心特点 MIPI(Mobile Industry Processor Interface,移动产业处理器接口)是由MIPI联盟制定的高速串行差分接口协议,最初为手机、平板等移动设备设计,目前广泛应用于FPGA/嵌入式的图像采集(摄像头)、显示驱动(液晶屏)、高速数据传输 场景。 核心特点: ✅ 采用差分信号传输,抗干扰能力强、EMI电磁辐射小; ✅ 支持高低速双模切换,兼顾高速大数据传输和低速控制指令传输; ✅ 串行传输,引脚数量极少(对比并行RGB的几十根引脚,MIPI仅需时钟+1~4路数据差分对),硬件设计简洁; ✅ 传输速率高:单lane(数据通道)速率可达1Gbps~