前端高频面试题: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

AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建

AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建

AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建 作者:高瑞冬 本文目录 * AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建 * 一、MCP协议简介 * 二、创建MCP工具集 * 1. 获取MCP服务地址 * 2. 在FastGPT中创建MCP工具集 * 三、测试MCP工具 * 四、AI模型调用MCP工具 * 1. 调用单个工具 * 2. 调用整个工具集 * 五、私有化部署支持 * 1. 环境准备 * 2. 修改docker-compose.yml文件 * 3. 修改FastGPT配置 * 4. 重启服务 * 六、使用MCP-Proxy集成多个MCP服务 * 1. MCP-Proxy简介 * 2. 安装MCP-Proxy * 3. 配置MCP-Proxy * 4. 将MCP-Proxy与FastGPT集成 * 5. 高级配置

By Ne0inhk
【大模型实战篇】基于Claude MCP协议的智能体落地示例

【大模型实战篇】基于Claude MCP协议的智能体落地示例

1. 背景         之前我们在《MCP(Model Context Protocol) 大模型智能体第一个开源标准协议》一文中,介绍了MCP的概念,虽然了解了其概念、架构、解决的问题,但还缺少具体的示例,来帮助进一步理解整套MCP框架如何落地。         今天我们基于claude的官方例子--获取天气预报【1】,来理解MCP落地的整条链路。 2. MCP示例         该案例是构建一个简单的MCP天气预报服务器,并将其连接到主机,即Claude for Desktop。从基本设置开始,然后逐步发展到更复杂的使用场景。         大模型虽然能力非常强,但其弊端就是内容是过时的,这里的过时不是说内容很旧,只是表达内容具有非实时性。比如没有获取天气预报和严重天气警报的能力。因此我们将使用MCP来解决这一问题。         构建一个服务器,该服务器提供两个工具:获取警报(get-alerts)和获取预报(get-forecast)。然后,将该服务器连接到MCP主机(在本例中为Claude for Desktop)。         首先我们配置下环

By Ne0inhk
AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

云边有个稻草人-ZEEKLOG博客 目录 引言 一、什么是DeepSeek? 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型训练与优化 4. 自动化推理与部署 5. 行业专用解决方案 三、蓝耘通义万相2.1与DeepSeek的对比分析 3.1 核心区别 3.2 结合使用的优势 四、蓝耘注册流程 五、DeepSeek与蓝耘通义万相2.1的集成应用 5.1 集成应用场景 1. 智能医疗诊断

By Ne0inhk
基于腾讯云HAI + DeepSeek快速设计自己的个人网页

基于腾讯云HAI + DeepSeek快速设计自己的个人网页

前言:通过结合腾讯云HAI 强大的云端运算能力与DeepSeek先进的 AI技术,本文介绍高效、便捷且低成本的设计一个自己的个人网页。你将了解到如何轻松绕过常见的技术阻碍,在腾讯云HAI平台上快速部署DeepSeek模型,仅需简单几步,就能获取一个包含个人简介、技能特长、项目经历及联系方式等核心板块的响应式网页。 目录 一、DeepSeek模型部署在腾讯云HAI 二、设计个人网页 一、DeepSeek模型部署在腾讯云HAI 把 DeepSeek 模型部署于腾讯云 HAI,用户便能避开官网访问限制,直接依托腾讯云 HAI 的超强算力运行 DeepSeek-R1 等模型。这一举措不仅降低了技术门槛,还缩短了部署时间,削减了成本。尤为关键的是,凭借 HAI 平台灵活且可扩展的特性,用户能够依据自身特定需求定制专属解决方案,进而更出色地适配特定业务场景,满足各类技术要求 。 点击访问腾讯云HAI控制台地址: 算力管理 - 高性能应用服务 - 控制台 腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力,只需简单的几步就能调用DeepSeek - R1

By Ne0inhk