共 13 道 TypeScript 方向的面试题,每题附完整答案与代码示例。点击右侧方框可标记掌握度。
TS 优势 1. 类型安全 :编译时发现错误 2. 智能提示 :IDE 自动补全更准确 3. 代码可读性 :类型即文档 4. 重构友好 :改类型后编译器报错引导修改 5. 大型项目协作 :接口契约清晰…
TS 在 JS 之上加了 静态类型系统 ,核心价值: - 编译期发现错误 (如调用未定义方法、传错参数类型) - IDE 智能提示 / 重构安全 (改名、跳转定义) - 可读性 :类型即文档 类型推断…
两者都能描述对象/联合类型,主要差异: 维度 interface type --- --- --- 扩展方式 extends 继承 & 交叉类型 合并声明 ✅ 同名自动合并 ❌ 不可重复声明 联合/元…
泛型让类型 参数化 ,在调用时才确定具体类型,兼顾复用与类型安全。 常见位置:容器类(Array<T )、工具函数、React 组件 props。约束用 extends 限制 T 的形状。
- 联合 A B :取值可以是 A 或 B(满足任一即可) - 交叉 A & B :同时满足 A 和 B(属性合并) 收窄(narrowing) :对联合类型,用 typeof / in / 类型守卫…
类型守卫是 运行时检查 + 编译期收窄 的手段: p is Fish 告诉编译器:若返回 true,则参数就是 Fish,从而安全调用其特有方法。
类型 含义 场景 --- --- --- any 关闭类型检查,可做任何操作 迁移旧代码、确实未知时( 尽量少用 ) unknown 类型未知但 安全 :使用前必须收窄 替代 any,接收任意输入(如…
映射类型用 in keyof 遍历已有类型的键,逐个变换: 配合 key remapping { [K in keyof T as ...]: ... } 还能改名(如 Getters<T 给每个属性…
条件类型形如 T extends U ? X : Y,根据类型关系二选一;infer 用于在 extends 中 推断并捕获 子类型。 分发(distributive) :裸类型参数(如 T)在联合类…
装饰器是 在不修改原代码前提下为类/方法/属性添加行为 的语法糖,本质是接收目标做加工并返回的函数。需在 tsconfig 开 experimentalDecorators: true。 类型 :类装…
.d.ts 只含 类型声明、不含实现 ,用来给 JS 代码或第三方库补充类型信息(不会生成运行时代码)。 来源优先级 : 1. 库自带 types / @types/xxx(如 @types/loda…
常用配置: - strict:一键开启一系列严格检查(noImplicitAny、strictNullChecks、strictPropertyInitialization 等) - target /…
模板字面量类型可在 类型层面拼接字符串 ,配合 infer 能实现强大的字符串类型推导: 这类「类型体操」适合写通用库(如类型安全的路由、i18n key 校验),业务代码里不宜过度使用以免可读性下降…