· 12 min read


TS 类型兼容性核心是 结构化类型——多的可以赋值给少的,duck typing 是关键。
any 万能,never 万不能
泛型函数是 TS 类型系统里复用率最高的特性——核心是 类型变量 T + 约束 extends 两个机制。
function id<T>(arg: T): T——比 any 安全<T>,TS 自动推断<T, U> 分别约束不同位置T extends Person 限定类型范围extends 和 implements 是两种完全不同的关系——前者是类型组合,后者是合同检查,混为一谈是新手最常踩的坑。
extends type,type 用 & 合并implements 不参与运行时Interface 是 TS 定义对象/数组结构的主力工具——核心是 形状契约,不是类继承。
interface Person { name; age } 限定对象必须有哪些字段name?: string 表示可有可无readonly age 防止外部修改[key: string]: any 描述动态字段tsconfig.json 选项有 100+ 个,但日常 80% 场景只需要 10 个左右。
strict: true:8 个严格检查全开,新项目必开target: "ES2022":覆盖 Node 18+ 和现代浏览器module: "NodeNext":Node ESM 现代写法skipLibCheck: true:跳过 .d.ts 检查,构建快 30%+noUncheckedIndexedAccess: true:arr[0] 类型变 T | undefined

JavaScript 定时调度 三 大核心 API
最佳实践:用递归 setTimeout 替代 setInterval,保证间隔准确、支持动态调 整。
零延迟调度:setTimeout(fn, 0) 不是立即执行,而是当前同步任务完成后尽快执行,可用于拆分长任务。
关键提醒:定时器回调中的 this 指向全局对象;务必清理不再需要的定时器防止内存泄漏。