In typescript it looks like this
type Option<T> = {some: T} | 'none'
type Optional<T> = {
[P in keyof T]: Option<T[P]>
};
type Foo = {x: string, y: number}
type OptionalFoo = Optional<Foo>
const foo: OptionalFoo = {x: 'none', y : {some: 123}}
case class Foo(x: String, y: Int)
I would like to have
type OptionalFoo = Optional[Foo] == case class OptionalFoo(x: Option[String], y: Option[Int])
Is it possible to achive something like this in Scala 3?