扩展通用类型别名

Extending generic typealias

我有一个通用的类型别名,例如

typealias StringArray = Array<String>

无法像这样扩展:

extension StringArray {
    //Some methods
}

但是有没有可能换一种方式或者让我写

extension Array where Element == String {
    //Some methods
}

?

请注意类型别名只是现有类型的标签,因此:

extension StringArray {
    //Some methods
}

与此相同:

extension Array<String> {
    //Some methods
}

这不会编译,因为它不是扩展的工作方式。如果要过滤泛型,则必须插入 where 子句。有关扩展的更多信息: https://docs.swift.org/swift-book/LanguageGuide/Extensions.html

有关扩展中通用 where 子句的更多信息:https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553