第一章:TypeScript 基础类型
环境配置
在开始使用TypeScript之前,我们需要配置开发环境:
# 安装类型定义
pnpm add @types/node -D
# 全局安装 ts-node
npm i ts-node -g
# 运行 TypeScript 文件
ts-node index.ts
或者使用 bun(自带ts解析器):
# Windows 安装 bun
powershell -c "irm bun.sh/install.ps1|iex"
# macOS 或 Linux 安装 bun
curl -fsSL https://bun.sh/install | bash
# 安装特定版本
curl -fsSL https://bun.sh/install | bash -s "bun-v1.0.0"
# 运行 TypeScript 文件
bun run index.ts
基础类型
TypeScript 提供了以下基础类型:
1. 字符串类型 (string)
let str: string = "string"; // 普通字符串
let str1: string = `string${str}`; // 模板字符串
2. 数字类型 (number)
TypeScript 中的所有数字都是浮点数,支持多种进制表示:
let notNum: number = NaN; // Number.NaN
let num: number = 123; // 普通数字
let num1: number = Number("1"); // 字符串转数字
let hex: number = 0xf00d; // 16进制
let binary: number = 0b1010; // 2进制
let octal: number = 0o744; // 8进制
let big: bigint = 9007199254740991n; // 大整数
3. 布尔类型 (boolean)
let bool: boolean = true; // 布尔值
let bool1: boolean = Boolean(1); // 数字转布尔值
4. null 和 undefined
let n: null = null;
let u: undefined = undefined;
5. Symbol 类型
let sym: symbol = Symbol("sym"); // Symbol类型
6. void 类型
void 表示没有任何返回值的类型:
let v: void = undefined; // 空值类型
function fn(): void {
console.log("void");
}
7. never 类型
never 表示"绝不会有值"的类型,用于表示永远不可能返回的函数:
// void 表示"没有有用返回值" (undefined)
// never 表示"绝对不可能返回任何值" (执行路径不结束)
function ne(): never {
throw new Error("never");
}
8. any 类型
any 表示任意类型,可以赋值给任意类型,也可以接受任意类型的值。开发中应尽量避免使用:
let a: any = "any"; // 任意类型
let a1: any[] = [1, "1", true]; // 任意类型的数组
let a2: {a: any} = {a: 1}; // 任意类型的对象
let a3: any = null; // 任意类型的null
let a4: any = undefined; // 任意类型的undefined
let a5: any = Symbol("any"); // 任意类型的Symbol
9. unknown 类型
unknown 是类型安全的 any,需要进行类型检查才能使用:
let u1: unknown = "unknown"; // 未知类型
let u2: unknown = 1; // 未知类型
// unknown 类型需要进行类型检查
u1.toString(); // 需要类型检查,如果是any不会报错,如果是unknown会报错
类型总结
| string | 字符串类型 | 文本数据 |
| number | 数字类型 | 数值计算 |
| boolean | 布尔类型 | 逻辑判断 |
| null | 空值类型 | 表示空值 |
| undefined | 未定义类型 | 表示未定义 |
| symbol | 符号类型 | 创建唯一标识 |
| void | 空值类型 | 无返回值函数 |
| never | 永不返回类型 | 抛出异常或死循环 |
| any | 任意类型 | 避免使用(除非必要) |
| unknown | 未知类型 | 类型安全的any |



