Implementing RawRepresentable, RawValue == String using Codable: keep it DRY for implementation of multiple types: did I do this right?

Probably it can and it's just a matter of overriding:

extension AppStorage where Value == YourTypeHere {
    public init(wrappedValue: Value, _ key: String, store: UserDefaults? = nil) {
        // TODO
    }
}

(haven't tried it myself).