typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰。使用的语法也很简单,使用 typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字
示例:
typealias strs=String
let str:strs="string"
print(str)
打印string
对于普通类型并没有什么难点,但是在涉及到泛型时,情况就稍微不太一样。首先,typealias 是单一的,也就是说你必须指定将某个特定的类型通过 typealias 赋值为新名字,而不能将整个泛型类型进行重命名。下面这样的命名都是无法通过编译的:
class CompletionTask<T>{
}
错误代码:
typealias Completion=CompletionTask
typealias Completion=CompletionTask<T>
typealias Completion<T>=CompletionTask<T>
正确代码
typealias Completion=CompletionTask<String>
或者
typealias task=String
typealias Completion=CompletionTask<task>