刷算法题必备:TypeScript 核心语法与数据结构速查手册

📅 2026/8/22 22:24:14
刷算法题必备:TypeScript 核心语法与数据结构速查手册
1. 表示正/负无穷在 TypeScript 中表示正无穷直接使用 Infinity 或 Number.POSITIVE_INFINITY 即可。两者完全等价推荐直接用 Infinity写法更短。基本用法letmaxValue:numberInfinity;letalsoMax:numberNumber.POSITIVE_INFINITY;console.log(maxValuealsoMax);// true直接写 Infinity类型是 number。检查时用 isFinite() 区分有限数和无穷大。若要表示负无穷使用 -Infinity。2. 获取字符 ASCII 码使用 charCodeAt() 方法核心语法constasciiCodeA.charCodeAt(0);// 返回 65实用示例// 1. 获取字符串第一个字符的码值conststrHello;console.log(str.charCodeAt(0));// 72 (H)// 2. 遍历字符串获取所有码值for(leti0;istr.length;i){console.log(str.charCodeAt(i));}// 3. 将 ASCII 码转回字符反向操作constcharString.fromCharCode(65);// 返回 A特别提醒普通英文/数字直接用 charCodeAt 即可如 ‘a’ - 97。表情符号或特殊汉字如 ‘’推荐使用 codePointAt(0)它能正确处理占用 4 个字节的字符charCodeAt 此时只会返回一半的数据。3. Array使用方法3.1 类型声明TypeScript 有两种声明数组类型的方式// 方式一类型 方括号letnumbers:number[][1,2,3];letstrings:string[][a,b];// 方式二泛型 Array类型letscores:Arraynumber[100,99];// 复杂对象数组interfaceUser{name:string;age:number;}letusers:User[][{name:张三,age:18}];// 联合类型数组包含多种类型letmixed:(string|number)[][1,hello,2];3.2 增删改查操作修改原数组常用方法示例 (以 arr [1,2,3] 为例)增尾部✅ 是push()arr.push(4); // [1,2,3,4]增头部✅ 是unshift()arr.unshift(0); // [0,1,2,3]删尾部✅ 是pop()arr.pop(); // [1,2]删头部✅ 是shift()arr.shift(); // [2,3]删/改/插指定位置✅ 是splice()arr.splice(1, 1); // 从索引1删1个查值的位置❌ 否indexOf()arr.indexOf(2); // 1查对象条件❌ 否find()arr.find(v v 2); // 3包含判断❌ 否includes()arr.includes(2); // true3.3创建包含 n 个指定元素的数组一维数组长度为 n填充指定值通用语法new Array(n).fill(值) 或 Array.from({ length: n }, () 值)填充基本类型数字、字符串、布尔值// 方法1fill最常用constarr1:number[]newArray(5).fill(0);// [0, 0, 0, 0, 0]constarr2:string[]newArray(3).fill(a);// [a, a, a]// 方法2Array.from更灵活可基于索引生成不同值constarr3:number[]Array.from({length:5},()0);// [0,0,0,0,0]二维数组n 行 m 列填充指定值核心原则每一行必须是独立的新数组绝不能共享同一引用。// 通用写法推荐// 创建一个 3 行 4 列的二维数组所有元素初始为 0constmatrix:number[][]Array.from({length:3},()newArray(4).fill(0));// 输出// [// [0, 0, 0, 0],// [0, 0, 0, 0],// [0, 0, 0, 0]// ]4. Map使用方法声明与初始化带类型必须显式或隐式地指定键Key和值Value的类型。// 显式声明类型constmap1newMapstring,number();map1.set(age,25);// OK// map1.set(25, age); // ❌ 编译报错键必须是 string增删改查操作方法示例添加/修改set(key, value)map.set(score, 100)读取get(key)const val map.get(score)注意返回类型为Value / undefined判断存在has(key)if (map.has(age)) { ... }删除delete(key)map.delete(age)清空clear()map.clear()获取大小size 属性console.log(map.size)修改 Map 中某个键对应的值核心方法只有一个 set() 但它有两种应用场景直接覆盖和基于旧值计算新值。覆盖写入替换如果新值与旧值无关直接用 set 覆盖即可。constmapnewMapstring,number();map.set(age,18);// 初始值map.set(age,25);// ✅ 直接将 age 的值修改为 25注意set 在键不存在时会新增在键存在时会更新幂等操作。基于旧值计算新值累加、拼接等这是最容易出错的点因为 TypeScript 严格模式下get 返回的类型是 Value | undefined。// 安全写法推荐constmapnewMapstring,number([[count,10]]);// 使用 ?? 空值合并运算符处理 undefinedmap.set(count,(map.get(count)??0)1);// count 变为 11原理如果键不存在get 返回 undefined我们用 ?? 0 兜底避免 NaN。