Avatar
protocol HasCodingKeys: Codable {} extension HasCodingKeys { func encode(to encoder: Encoder) throws { fatalError() } init(from decoder: Decoder) throws { fatalError() } } struct A: HasCodingKeys { private typealias Keys = CodingKeys // Use of undeclared type 'CodingKeys' } Codableinit(from decoder: Decoder)func encode(to encoder: Encoder) をprotocol extensionに実装すると、Aの中でCodingKeys がundeclaredになるんですが、どういう仕組みになってるんですかね。 (edited)