title: "Value of optional type Self? not unwrapped" inside failable initializer with "try?" and "Self", how to write without force unwrapping
body: <p>I'm trying to add JSON deserializing functionality inside my protocols, but I can't get the <code>decode</code> function to compile. How do I write the initializer without forcibly unwrapping the value?</p>
  
  <pre><code>protocol Mappable: Codable {
    init?(jsonString: String)
  }
  
  extension Mappable {
    init?(jsonString: String) {
      guard let data = jsonString.data(using: .utf8) else {
          return nil
      }
      // TODO:- Value of optional type 'Self?' not unwrapped error
      self = try? JSONDecoder().decode(Self.self, from: data)
    }
  }
  </code></pre>