Swift 类型别名

在本文中,您将了解 Swift 中的类型别名及其用例。

类型别名让您可以在程序中为现有 数据类型 提供新名称。声明类型别名后,可以在整个程序中使用别名来代替现有类型。

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

类型别名的主要目的是使代码更具可读性,并且在上下文中更清晰,便于人们理解。


如何创建类型别名?

它使用关键字 typealias 声明为:

  1. typealias name = existing type

在 Swift 中,您可以对大多数类型使用类型别名。它们可以是:

  • 内置类型(例如:String、Int)
  • 用户定义类型(例如:类、结构、枚举)
  • 复杂类型(例如:闭包)

内置类型的类型别名

您可以为所有内置数据类型使用类型别名,如 String、Int、Float 等。

比如,

  1. typealias StudentName = String

上述声明支持在任何地方使用 StudentName 而不是 String。所以,如果你想创建一个字符串类型的常量,但它更像学生的名字。您可以这样做:

  1. let name:StudentName = "Jack"

如果不使用类型别名,则应将类型字符串的常量声明为:

  1. let name:String = "Jack"

以上两个示例都创建了 String 类型的常量。但是使用类型别名声明,我们的代码变得更具可读性。


用户定义类型的类型别名

在许多情况下,您需要创建自己的数据类型。假设您想创建一个表示 StudentType,您可以使用如下类创建它:

  1. class Student {
  2. }

现在,一组学生可以表示为一个数组:

  1. var students:Array<Student> = []

通过使用 typealiasArray<Student> 创建自己的类型,可以使上述声明更具可读性:

  1. typealias Students = Array<Student>

现在,我们可以使代码更具可读性:

  1. var students:Students = []

复杂类型的类型别名

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

如果您不了解闭包,请不要担心。只要把它看作一种特殊类型的函数。我们在 Swift 闭包 章节中详细解释了它。

  1. func someMethod(oncomp:(Int)->(String)){
  2. }

上面的实例将闭包作为 someMethod 的输入。闭包接受一个 Int 值并返回 String

您可以看到,(Int)->(String) 的使用对读者来说意义不大。您可以使用 typealias 为其提供新名称:

  1. typealias CompletionHandler = (Int)->(String)

现在可以将该方法重写为:

  1. func someMethod(oncomp:CompletionHandler){
  2. }

我们可以看到,使用 typealias 类型 别名后,相同的代码看起来更清晰,对程序员更友好。