Swiftのany someを用いた型消去の認識について


以下が型消去という認識であっているでしょうか？

[code]

    protocol Animal { }
    struct Cat: Animal { }
    
    let animals: [Cat] = [Cat(), Cat(), Cat()]
    // ↓型消去
    let animals: [some Animal] = [Cat(), Cat(), Cat()]
    
    
    func getAnimal() -> Cat {
      return Cat()
    }
    // ↓型消去
    func getAnimal() -> some Animal {
      return Cat()
    }
    
    func getAnimal() -> any Animal {
      return Bool.random() ? Cat() : Dog()
    }
    
[/code]

