I have an object like this and infer types using settingToType helper:
enum SettingType {
Departures = 'departures',
Dashboards = 'bookings_dashboards',
MainNumber = 'main_number_is_booked_spots',
}
type Setting<P> = {
type: SettingType
payload: P
component: Component<{
modelValue: P
'onUpdate:modelValue'?: (payload: P) => void
}>
validator: ZodType<P>
}
const settingToType = <P>(s: Setting<P>) => s
export const settingsInfo = {
[SettingType.Departures]: settingToType({
type: SettingType.Departures,
component: DeparturesListSelectorVue,
payload: [],
validator: array(number()),
}),
[SettingType.Dashboards]: settingToType({
type: SettingType.Dashboards,
component: BookingsDashboardSelectorVue,
payload: [],
validator: array(number()),
}),
[SettingType.MainNumber]: settingToType({
type: SettingType.MainNumber,
component: AvailableBookedSpotsSelectorVue,
payload: false,
validator: boolean(),
}),
}
How to replace multiple usage of settingToType with one function which infers all object at once?