# Swift 类型别名

> 原文： [https://www.programiz.com/swift-programming/typealias](https://www.programiz.com/swift-programming/typealias)

#### 在本文中，您将学习 Swift 中的类型别名及其用例。

类型别名允许您为程序中的现有[数据类型](/swift-programming/data-types "Swift data types")提供新名称。 声明类型别名后，可以在整个程序中使用别名代替现有类型。

类型别名不会创建新类型。 它们只是为现有类型提供一个新名称。

`typealias`的主要目的是使我们的代码更具可读性，并且在上下文中更清晰易懂，以供人类理解。

* * *

## 如何创建类型别名？

使用关键字`typealias`声明为：

```swift
typealias name = existing type
```

在 Swift 中，大多数类型都可以使用`typealias`。 它们可以是：

*   **内置类型**（例如：字符串，整数）
*   **用户定义的类型**（例如：类，结构，枚举）
*   **复杂类型**（例如：闭包）

* * *

## 内置类型的别名

您可以将`typealias`用于所有内置数据类型，如`String`，`Int`，`Float`等。

**例如**：

```swift
typealias StudentName = String
```

上面的声明允许 <vara>StudentName</vara> 可以在任何地方使用，而不是`String`。 因此，如果您想创建一个字符串类型的常量，但是却更像是学生姓名。 您可以这样做：

```swift
let name:StudentName = "Jack"
```

在不使用`typealias`的情况下，应将`string`类型的常量声明为：

```swift
let name:String = "Jack"
```

在这两个示例上面都创建了一个`String`类型的常量。 但是用`typealias`声明，我们的代码变得更易读。

* * *

## 用户定义类型的类型别名

在许多情况下，您需要创建自己的数据类型。 假设您要创建一个表示`Student`的`Type`，则可以使用以下类来创建它：

```swift
class Student {

} 
```

现在，一组学生可以表示为数组：

```swift
var students:Array<Student> = []
```

通过使用`typealias`为`Array<Student>`创建您自己的类型，可以使上述声明更具可读性：

```swift
typealias Students = Array<Student>
```

现在，我们可以使代码更具可读性：

```swift
var students:Students = []
```

* * *

## 复杂类型的别名

让我们再分析一个例子。 假设我们有一个将闭包作为输入参数的方法。

如果您不了解闭包，请不要担心。 只需将其视为一种特殊的函数即可。 我们已经在文章中详细解释了它： *Swift 闭包*。

```swift
func someMethod(oncomp:(Int)->(String)){

} 
```

上面的示例将闭包作为`someMethod`的输入。 闭包采用`Int`值并返回`String`。

您会发现使用`(Int)->(String)`对读者来说意义不大。 您可以使用`typealias`为它提供一个新名称：

```swift
typealias CompletionHandler = (Int)->(String)
```

现在，您可以将方法重写为：

```swift
func someMethod(oncomp:CompletionHandler){

}
```

我们可以看到，使用`typealias`，相同的代码看起来更加清晰并且对程序员友好。