ZetCode

TypeScript 变量

最后修改时间:2025年3月3日

TypeScript 中的变量使用严格的类型注解来存储数据。它们通过添加类型安全和更好的工具支持来增强 JavaScript 变量。本教程通过实际示例探索变量声明、类型注解和最佳实践。

基本变量声明

TypeScript 变量可以使用 letconstvar 声明。此示例展示了带有类型的基本变量声明。

basic_variables.ts
let age: number = 30;
const name: string = "Alice";
var isActive: boolean = true;

console.log(age, name, isActive);  // Output: 30 Alice true

TypeScript 强制执行类型注解,确保变量在其生命周期中持有正确的数据类型。

类型推断

当变量在没有显式注解的情况下初始化时,TypeScript 会推断类型。这可以减少冗余,同时保持类型安全。

type_inference.ts
let score = 95;        // TypeScript infers `number`
const message = "Hi";  // TypeScript infers `string`

console.log(score, message);  // Output: 95 Hi

类型推断适用于原始类型、数组和对象。建议对复杂类型使用显式注解。

联合类型

变量可以使用联合类型存储多种类型。这对于灵活的数据处理很有用。

union_types.ts
let id: string | number;
id = "ABC123";
console.log(id);  // Output: ABC123

id = 123;
console.log(id);  // Output: 123

联合类型允许变量在指定的类型之间切换,从而在保持类型安全的同时提供灵活性。

字面量类型

字面量类型将变量限制为特定值。这对于枚举或固定值集很有用。

literal_types.ts
let status: "active" | "inactive";
status = "active";
console.log(status);  // Output: active

// status = "pending";  // Error: Type '"pending"' is not assignable

字面量类型确保变量只持有预定义的值,从而减少运行时错误。

数组和元组

数组和元组存储值的集合。TypeScript 会强制执行数组的元素类型和元组的固定结构。

arrays_tuples.ts
let numbers: number[] = [1, 2, 3];
let person: [string, number] = ["Alice", 30];

console.log(numbers);  // Output: [1, 2, 3]
console.log(person);   // Output: ["Alice", 30]

数组允许动态集合,而元组强制执行具有特定类型的固定长度结构。

对象和接口

对象存储键值对。接口定义对象的结构以实现类型安全。

objects_interfaces.ts
interface User {
    name: string;
    age: number;
}

let user: User = { name: "Bob", age: 25 };
console.log(user);  // Output: { name: "Bob", age: 25 }

接口确保对象符合预定义的结构,从而提高代码的可读性和可维护性。

枚举

枚举定义一组命名常量。它们通过替换魔法数字或字符串来提高代码的可读性。

enums.ts
enum Status {
    Active = "ACTIVE",
    Inactive = "INACTIVE",
}

let currentStatus: Status = Status.Active;
console.log(currentStatus);  // Output: ACTIVE

枚举提供了一种管理常量的结构化方法,可减少错误并提高代码清晰度。

类型别名

类型别名创建可重用的自定义类型。它们简化了复杂的类型定义并改善了代码组织。

type_aliases.ts
type Point = {
    x: number;
    y: number;
};

let origin: Point = { x: 0, y: 0 };
console.log(origin);  // Output: { x: 0, y: 0 }

类型别名通过将复杂的类型定义抽象为可重用组件,使代码更具可读性。

最佳实践

来源

TypeScript 变量文档

本教程通过实际示例介绍了 TypeScript 变量。实现这些模式可以编写更安全、更易于维护的代码。

作者

我叫 Jan Bodnar,是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 TypeScript 教程