1. 表示正/负无穷
在 TypeScript 中,表示正无穷直接使用 Infinity 或 Number.POSITIVE_INFINITY 即可。
两者完全等价,推荐直接用 Infinity(写法更短)。
基本用法
letmaxValue:number=Infinity;letalsoMax:number=Number.POSITIVE_INFINITY;console.log(maxValue===alsoMax);// true直接写 Infinity,类型是 number。检查时用 isFinite() 区分有限数和无穷大。若要表示负无穷,使用 -Infinity。
2. 获取字符 ASCII 码(使用 charCodeAt() 方法)
核心语法:
constasciiCode='A'.charCodeAt(0);// 返回 65实用示例:
// 1. 获取字符串第一个字符的码值conststr='Hello';console.log(str.charCodeAt(0));// 72 (H)// 2. 遍历字符串获取所有码值for(leti=0;i<str.length;i++){console.log(str.charCodeAt(i));}// 3. 将 ASCII 码转回字符(反向操作)constchar=String.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:Array<number>=[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); // true |
3.3创建包含 n 个指定元素的数组
一维数组(长度为 n,填充指定值)
通用语法:new Array(n).fill(值) 或 Array.from({ length: n }, () => 值)
填充基本类型(数字、字符串、布尔值)
// 方法1:fill(最常用)constarr1:number[]=newArray(5).fill(0);// [0, 0, 0, 0, 0]constarr2:string[]=newArray(3).fill('a');// ['a', 'a', 'a']// 方法2:Array.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)的类型。
// 显式声明类型constmap1=newMap<string,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 覆盖即可。
constmap=newMap<string,number>();map.set('age',18);// 初始值map.set('age',25);// ✅ 直接将 'age' 的值修改为 25注意:set 在键不存在时会新增,在键存在时会更新(幂等操作)。
- 基于旧值计算新值(累加、拼接等)
这是最容易出错的点,因为 TypeScript 严格模式下,get 返回的类型是 Value | undefined。
// 安全写法(推荐):constmap=newMap<string,number>([['count',10]]);// 使用 ?? 空值合并运算符(处理 undefined)map.set('count',(map.get('count')??0)+1);// count 变为 11原理:如果键不存在,get 返回 undefined,我们用 ?? 0 兜底,避免 NaN。