это же typealias двух протоколов. Протокол по идее просто интерфейс без реализации, он просто указывает, какие методы должны быть имплементированы, но когда ты наследуешься от Codable, ты функционал получаешь как бы сразу, ничего не имплементируешь руками. Где дефолтная реализация этого функционала находится у кодабл, где-то в экстеншене прописана, или может как-то интереснее всё сделано, кто знает?
Осмелюсь редположить, что когда ты имплементишь Codable, то метод encode реализовывать надо обязательно, потому что он требуется в протоколе Encodable, но если бы ты имплементил просто Decodable, то никакого требования реализации интерфейса в обязаловку бы не было, поскольку Decodable внутри себя конструктор содержит как контракт, его явно можно не объявлять
Обсуждают сегодня