当前位置: 首页 > wzjs >正文

网站链接云数据库东莞seo外包公司

网站链接云数据库,东莞seo外包公司,冠县网站建设是什么,老牌网站建设TypeScript 核心类型系统与实践 1. 为什么前端面试中越来越重视 TypeScript? 复杂业务场景需要强类型保障稳定性;更好的 IDE 支持和智能提示;降低线上 bug 概率;成熟的工程团队都在使用;对于 React/Vue 项目维护可读性…

TypeScript 核心类型系统与实践


1. 为什么前端面试中越来越重视 TypeScript?

  • 复杂业务场景需要强类型保障稳定性;
  • 更好的 IDE 支持和智能提示;
  • 降低线上 bug 概率;
  • 成熟的工程团队都在使用;
  • 对于 React/Vue 项目维护可读性更强。

2. TypeScript 的核心类型

✅ 原始类型

let str: string = 'hello';
let num: number = 123;
let flag: boolean = true;
let u: undefined = undefined;
let n: null = null;

✅ 数组与元组

let arr: number[] = [1, 2, 3];
let tuple: [string, number] = ['Tom', 25];

✅ 枚举(enum)

enum Direction {Up,Down,Left,Right,
}

✅ any 与 unknown

let a: any = 123; // 可绕过检查(不推荐)
let b: unknown = 'xxx'; // 必须类型断言后使用(推荐)

✅ void 与 never

function log(): void {console.log('ok');
}function error(): never {throw new Error('err');
}

3. 接口(interface)和类型别名(type)

✅ interface

interface Person {name: string;age?: number; // 可选属性
}

✅ type

type Point = {x: number;y: number;
};

面试常考区别:

  • interface 可被扩展(继承、合并),type 更灵活(联合、交叉)
  • 推荐优先使用 interface 定义对象结构

4. 类型推断与类型保护

✅ 类型推断

let name = 'Tom'; // 推断为 string

✅ 类型保护(Type Guards)

function isString(val: unknown): val is string {return typeof val === 'string';
}

5. 联合类型与交叉类型

✅ 联合类型

let value: string | number;

✅ 交叉类型

type Admin = { role: string };
type User = { name: string };
type AdminUser = Admin & User;

6. 泛型(Generics)🌟 面试高频考点

✅ 定义泛型函数

function identity<T>(arg: T): T {return arg;
}

✅ 泛型接口/类型

interface Box<T> {value: T;
}

✅ 约束泛型

function getLength<T extends { length: number }>(val: T) {return val.length;
}

7. 条件类型(高级类型技巧)

type IsString<T> = T extends string ? true : false;

常见内置工具类型:

工具类型作用
Partial<T>将 T 的所有属性变为可选
Readonly<T>所有属性只读
Pick<T, K>选择部分属性
Omit<T, K>排除部分属性
Record<K, T>构造键值对类型
ReturnType<T>提取函数返回类型

8. 实战面试题精讲

📌 Q1:type 和 interface 有什么区别?你如何选择?

答:

  • type 更灵活,可表达联合类型、元组、映射类型;
  • interface 更适合对象类型定义,支持声明合并;
  • 实际项目推荐对象结构用 interface,其他用 type

📌 Q2:如何定义一个支持任意键值的接口?

interface AnyObject {[key: string]: any;
}

📌 Q3:你是否用过泛型?举个例子?

function map<T, U>(arr: T[], fn: (item: T) => U): U[] {return arr.map(fn);
}

📌 Q4:如何约束泛型必须是数组?

function firstElement<T extends any[]>(arr: T): T[0] {return arr[0];
}

9. 常见误区 ⚠️

误区正确做法
认为 any 就是万能解决方案尽量避免 any,推荐使用 unknown 或具体类型
type 重复定义对象类型使用 interface 更适合扩展性和结构清晰
忽略了默认 strict 模式的重要性开启 strict 模式保障类型安全
不理解 never 类型的实际意义never 表示永远不会有返回(抛错/死循环)

✅ 总结

TypeScript 类型系统是前端工程化的根基,尤其在大型项目中提供了强大的类型约束和智能提示。掌握类型定义、泛型、工具类型等核心概念,不仅能写出更稳定的代码,也是中高级前端面试的必答项。

http://www.dtcms.com/wzjs/301303.html

相关文章:

  • 黑群辉做web下载网站长沙seo全网营销
  • 可以看b站的视频软件全网营销方案
  • 济南商城网站开发推广计划方案
  • 汕头网站建设模板网络服务中心
  • 我的足球网网页制作素材多少关键词排名优化软件
  • wordpress大学主题3.5百度seo推广怎么做
  • 做网站需要拉多大的宽带seo投放营销
  • 泉州有哪些公司是做网站seo可以从哪些方面优化
  • 郑州网站建设tpywlkj有趣的网络营销案例
  • 房屋竣工验收备案表网上查询百度推广优化排名
  • 黑龙江省农业网站建设情况关键词优化需要从哪些方面开展
  • 做网站就上凡科建站整合营销策划方案
  • 网站如何重新备案网页怎么制作
  • 厦门制作公司网站高端定制网站建设公司
  • 如何自己做网站手机软件百度app安装免费下载
  • 邯郸网站优化公司网络营销案例题
  • 网站开发用px还是rem免费制作自己的网页
  • app界面模板免费下载旺道网站排名优化
  • 汇鑫网站建设steam交易链接在哪里看
  • 南京网站建设推南京网站建设设计昆明seo案例
  • 网站建设运营费用做搜索引擎优化的企业
  • 洛阳有建社网站的吗自己的产品怎么推广
  • 自己做国际网站太原seo霸屏
  • 网站建设规划书百度文库网络销售怎么才能找到客户
  • 临沂建设局网站质量三监督百度推广公司
  • 网站建设费用评估优化营商环境的措施建议
  • 天堂8资源中文在线杭州seo教程
  • 网站建设详细流程泉州百度竞价开户
  • 58同城网站模板下载护肤品推广软文
  • vs2010网站开发 调试 打不开页面 浏览器错误吉安seo