ZetCode

TypeScript 类型别名

最后修改日期:2025年1月24日

TypeScript 中的类型别名允许你为类型创建自定义名称,使代码更具可读性和可维护性。它们可用于简化复杂的类型定义、创建可重用类型以及提高类型安全性。本教程涵盖了 TypeScript 中类型别名的创建、用法和实际示例。

什么是类型别名?

类型别名是为类型命名的一种方式。它们使用 `type` 关键字创建,可以代表原始类型、对象类型、联合类型等。类型别名不会创建新类型,而是提供了一种方便的方式来引用现有类型。

基本类型别名

此示例演示了如何为原始类型创建基本类型别名。

basic_type_alias.ts
type Age = number;

let userAge: Age = 25;
console.log(userAge);  // Output: 25

为 `number` 类型创建了 `Age` 类型别名。这提高了代码的可读性,并允许在需要更新类型时更轻松地进行更改。

对象类型别名

此示例演示了如何为对象类型创建类型别名。

object_type_alias.ts
type User = {
    name: string;
    age: number;
    isActive: boolean;
};

let user: User = {
    name: "Alice",
    age: 30,
    isActive: true
};

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

为具有特定属性的对象类型创建了 `User` 类型别名。这使得定义和重用用户对象的结构更加容易。

联合类型别名

此示例演示了如何为联合类型创建类型别名。

union_type_alias.ts
type ID = string | number;

let userId: ID = "12345";
let productId: ID = 67890;

console.log(userId);    // Output: 12345
console.log(productId); // Output: 67890

为可以是 `string` 或 `number` 的联合类型创建了 `ID` 类型别名。这允许灵活的类型定义。

函数类型别名

此示例演示了如何为函数类型创建类型别名。

function_type_alias.ts
type GreetFunction = (name: string) => string;

let greet: GreetFunction = (name) => {
    return `Hello, ${name}!`;
};

console.log(greet("Alice"));  // Output: Hello, Alice!

为接受 `string` 参数并返回 `string` 的函数类型创建了 `GreetFunction` 类型别名。这使得定义和使用具有相同签名的函数更加容易。

元组类型别名

此示例演示了如何为元组类型创建类型别名。

tuple_type_alias.ts
type Point = [number, number];

let coordinates: Point = [10, 20];
console.log(coordinates);  // Output: [10, 20]

为表示数字对的元组类型创建了 `Point` 类型别名。这使得处理坐标对或类似数据结构更加容易。

组合类型别名

此示例演示了如何组合多个类型别名来创建复杂类型。

combining_type_aliases.ts
type ID = string | number;
type User = {
    id: ID;
    name: string;
    age: number;
};

let user: User = {
    id: "12345",
    name: "Alice",
    age: 30
};

console.log(user);  // Output: { id: "12345", name: "Alice", age: 30 }

`User` 类型别名结合了 `ID` 类型别名和其他属性,以创建更复杂的类型。这允许可重用和模块化的类型定义。

使用类型别名的最佳实践

来源

TypeScript 类型别名文档

在本文中,我们探讨了 TypeScript 类型别名,并通过实际示例演示了它们的用法。

作者

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

列出所有 TypeScript 教程