Create codable struct with generic type
First of all, Sorry for unclear title of question I'm making a codable struct which will be used as json message. enum MessageType: String, Codable{ case content case request case response } struct Message: Codable{ var type: MessageType var content: /* NEED HELP HERE */ } struct Content: Codable {...} struct Request: Codable {...} struct Response: Codable {...} When declaring Message , if its type is content , its content 's type should be Content . let message = Message( type: .content, content: Content( ... ) } When type is request , its content 's type should be Request . let message =