TypeScript 基础类型与枚举
TypeScript 在 JavaScript 基础上增加了严格的类型系统,下面梳理基础类型与枚举用法。
基础类型
布尔值
TypeScript
let isDone: boolean = false;
数字
TypeScript
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
字符串
TypeScript
let name: string = "TypeScript";
let greeting: string = `Hello, ${name}`;
数组
两种写法等价:
TypeScript
let list1: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3]; // 泛型写法
元组(Tuple)
固定长度与类型的数组:
TypeScript
let pair: [string, number] = ["age", 25];
pair[0].toUpperCase(); // ✅
// pair[2] = true; // ❌ 越界错误
any / unknown / void / never
| 类型 | 说明 | 使用场景 |
|---|---|---|
any | 关闭类型检查 | 不推荐使用,破坏类型安全 |
unknown | 安全版 any | 不确定类型时需先做类型守卫 |
void | 无返回值 | 函数返回值为 undefined |
never | 永不存在的值 | 抛出异常/死循环的函数返回值 |
TypeScript
let val: any = 42;
val = "string"; // ✅ 任何类型都可赋值给 any
let u: unknown = 42;
// u.toFixed(); // ❌ 需先检查类型
if (typeof u === "number") {
u.toFixed(); // ✅
}
function log(msg: string): void {
console.log(msg);
}
function throwError(msg: string): never {
throw new Error(msg);
}
null 与 undefined
TypeScript
let n: null = null;
let u: undefined = undefined;
// 默认情况下 null 和 undefined 是所有类型的子类型
// strictNullChecks: true 时变为独立类型
object
TypeScript
declare function create(o: object): void;
create({ prop: 0 }); // ✅
create(null); // ✅
// create(42); // ❌ 基本类型不行
枚举
数字枚举
TypeScript
enum Direction {
Up, // 0
Down, // 1
Left, // 2
Right // 3
}
let d: Direction = Direction.Up;
console.log(Direction[0]); // "Up"(反向映射)
自定义起始值:
TypeScript
enum Status {
Active = 1,
Inactive, // 2
Pending // 3
}
字符串枚举
TypeScript
enum EventType {
CLICK = "click",
HOVER = "hover",
FOCUS = "focus"
}
function handleEvent(type: EventType) {
console.log(`Event: ${type}`);
}
handleEvent(EventType.CLICK);
常量枚举
使用 const 修饰,编译后内联值,不产生额外代码:
TypeScript
const enum Colors {
Red = "#FF0000",
Green = "#00FF00",
Blue = "#0000FF"
}
let color: string = Colors.Red; // 编译为:let color = "#FF0000";
注意:常量枚举不能有计算成员,所有成员必须是字面量或引用其他常量枚举成员。
联合类型枚举配合
TypeScript
type Role = "admin" | "user" | "guest";
const role: Role = "admin";
建议:字符串值用联合类型,需要反向映射用数字枚举,需要类型安全用字符串枚举。
要点总结
- 基础类型包括
string/number/boolean/数组/元组等 any关闭类型检查,unknown是安全替代方案void用于无返回值函数,never用于永不返回的函数- 数字枚举自动递增赋值,支持反向映射
- 字符串枚举无反向映射,但类型更安全
const enum编译时内联,无额外运行时开销
📝 发现内容有误?点击此处直接编辑