第65课:接口与类型别名——interface vs type、声明合并、索引签名、只读属性在 TypeScript 中,定义对象形状有两种核心方式:接口(interface) 和类型别名(type)。它们都能为对象、函数等复杂结构赋予明确的类型约束,但在语法细节、扩展方式和适用场景上存在重要差异。理解何时使用 interface、何时使用 type,是编写清晰、可维护的 TypeScript 代码的关键。本节课将深入两者的语法、扩展机制、声明合并特性,并讲解索引签名和只读属性的实战用法。
1. interface:对象形状的声明契约interface 用于定义一个对象的形状——它应该...
第64课:基本类型与类型注解——原始类型、数组、元组、any/unknown/never/voidTypeScript 的核心价值在于静态类型检查:在代码运行之前发现潜在的类型错误。类型注解(Type Annotation)是 TypeScript 的基础语法,它为变量、函数参数和返回值赋予明确的类型约束。本节课将系统讲解 TypeScript 的原始类型、数组与元组声明,以及四个具有特殊语义的顶级类型——any、unknown、never 和 void。理解这些类型的适用场景与限制,是构建类型安全的 TypeScript 程序的第一步。
1. 原始类型(...
第63课:TypeScript 环境与配置——安装、tsc、tsconfig.json 详解、编译选项TypeScript 是 JavaScript 的超集,通过添加静态类型检查将前端开发从“运行时才发现错误”提升到“编译时即发现问题”。要使用 TypeScript,首先需要搭建开发环境:安装 TypeScript 编译器(tsc),并通过 tsconfig.json 配置文件精确控制编译行为。本节课将带你从零开始安装 TypeScript、使用 tsc 编译第一个 .ts 文件,然后逐项拆解 tsconfig.json 中的核心编译选项——从 target、module、strict ...
第62课:事件循环与异步编程——调用栈、任务队列、宏任务/微任务、async/awaitJavaScript 是单线程语言,同一时间只能执行一段代码。然而 Web 应用中充斥着耗时操作:网络请求、定时器、用户交互。如果这些操作以同步方式阻塞主线程,页面将完全冻结。JavaScript 通过事件循环(Event Loop) 和异步编程模型解决了这一矛盾:将耗时任务委托给浏览器或 Node.js 的底层线程处理,主线程继续执行后续代码,待异步操作完成后通过回调将结果重新注入主线程。理解事件循环的运转机制——调用栈、宏任务队列、微任务队列以及它们之间的优先级关系——是掌握 ...
第61课:Proxy 与 Reflect——元编程、拦截器、响应式原理基础Proxy 和 Reflect 是 ES6 引入的元编程工具。Proxy 允许你创建一个对象的“代理”,拦截并自定义对该对象的基本操作(如属性读取、赋值、枚举、函数调用等)。Reflect 则是一个内置对象,提供了与 Proxy 的拦截器(trap)一一对应的静态方法,用于实现默认行为,同时让操作更具函数式风格。这两者结合,不仅构成了 Vue 3 响应式系统的底层基石,也为数据校验、日志记录、API 沙箱等场景提供了强大的原生支持。本节课将详细拆解 13 种 Proxy 拦截器的用途、Reflect 的配套方法,以...
第60课:Map、Set 与 Weak 版本——集合类型、WeakMap 用途、内存泄漏防护在 ES6 之前,JavaScript 中管理键值对集合只能依赖普通对象 {}(键只能是字符串或 Symbol),而管理不重复的值集合则需手动通过数组模拟。ES6 引入了四个新的集合类型:**Map(键值对集合,键可以是任意类型)、Set(唯一值集合)、WeakMap(键必须是对象且被弱引用的 Map)和 WeakSet(值必须是对象且被弱引用)。它们各自解决了特定场景下的痛点,尤其是 WeakMap 在私有数据存储和内存泄漏防护**方面有不可替代的作用。本节课将深入每种集合类...
第59课:迭代器与生成器——Symbol.iterator、for-of、yield、next()迭代器(Iterator)和生成器(Generator)是 JavaScript 中处理可遍历数据结构和惰性计算的核心机制。ES6 引入了统一的迭代协议——任何实现了 Symbol.iterator 方法的对象都被视为可迭代对象,可以配合 for-of 循环、展开运算符、解构赋值等语法使用。生成器则是一种特殊的函数,可以暂停和恢复执行,每次产出(yield)一个值,是实现自定义迭代器和异步流程控制的强大工具。本节课将系统讲解迭代协议的定义、内置可迭代对象、生成器函数的语法与执行模型,以及两者...
第58课:模块化(ES Modules)——export/import、动态导入、Tree Shaking模块化是将大型程序拆分为独立、可复用的小块(模块)的机制。在 ES6 之前,JavaScript 没有原生的模块系统,社区通过 CommonJS(Node.js)和 AMD(浏览器)等方案弥补。ES6 引入了官方标准的 ES Modules(ESM),使用 import 和 export 关键字在编译时定义模块依赖。ES Modules 带来了静态结构(使得 Tree Shaking 和打包优化成为可能)、默认严格模式、独立的模块作用域以及异步加载能力。本节课将系统讲解导出...
第57课:日期与时间——Date 对象、Intl.DateTimeFormat、时区处理、Temporal 展望在 Web 应用中,日期和时间处理无处不在:从显示文章发布时间、计算倒计时,到处理跨时区的国际航班预订。JavaScript 提供了内置的 Date 对象来处理时间,但其 API 设计存在诸多缺陷——月份从 0 开始、时区转换困难、解析行为不一致。ES6 引入了 Intl.DateTimeFormat 进行本地化格式化,而 TC39 的 Temporal 提案则致力于提供现代化的不可变时间 API。本节课将系统讲解 Date 对象的创建、操作、格式化方法,深入探讨时区的概念与处...
第56课:JSON 与数据存储——JSON.parse/stringify、localStorage、sessionStorage在 Web 应用中,数据的持久化和交换离不开两种关键能力:序列化与反序列化(将数据结构转为文本,再从文本还原)和浏览器端存储(在用户设备上保存数据)。JSON(JavaScript Object Notation)是 Web 生态中最通用的数据交换格式,而 localStorage 和 sessionStorage 是浏览器提供的键值对存储 API。本节课将深入讲解 JSON 序列化的精细控制(包括 replacer 和 reviver 回调)、两种...