刷算法题必备:TypeScript 核心语法与数据结构速查手册
2026/8/22 22:24:06 网站建设 项目流程

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() ,但它有两种应用场景:直接覆盖和基于旧值计算新值。

  1. 覆盖写入(替换)
    如果新值与旧值无关,直接用 set 覆盖即可。
constmap=newMap<string,number>();map.set('age',18);// 初始值map.set('age',25);// ✅ 直接将 'age' 的值修改为 25

注意:set 在键不存在时会新增,在键存在时会更新(幂等操作)。

  1. 基于旧值计算新值(累加、拼接等)
    这是最容易出错的点,因为 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。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询