Is it possible to dynamically generate a new interface based on an existing one, with key names derived from the originals?
Here's an example of what I'm trying to achieve:
If we have this source object:
interface Car {
brand: Brand;
model: string;
year: number;
}
I want to declare an interface like this:
interface CarSetters {
setBrand: (brand: Brand) => any;
setModel: (model: string) => any;
setYear: (year: number) => any;
}
However, instead of manually declaring it as shown above, I'd like to be able to use something like:
type CarSetters = Setters<Car>
or
type CarState = Car & Setters<Car>