cart: {
mutations: {
add() { },
remove() { }
}
modules: {
subCart: {
mutations: {
add() { },
}
}
}
},
type GetModuleMutationKeys<Module, Key> =
// ‘cart/add’ | ‘cart | remove’
AddPrefix<Key, keyof GetMutations> |
// ‘cart/subCart/add’
GetSubModuleKeys<Module, Key>
type GetSubModuleKeys<Module, Key> = Module extends { modules: infer SubModules }
? AddPrefix<
// ‘cart’
Key,
// ‘subCart/add’
GetModulesMutationKeys
: never
cart: {
mutations: {
add() { },
remove() { }
}
modules: {
subCart: {
mutations: {
add() { },
}
}
}
},
type GetModuleMutationKeys<Module, Key> =
// ‘cart/add’ | ‘cart | remove’
AddPrefix<Key, keyof GetMutations> |
// ‘cart/subCart/add’
GetSubModuleKeys<Module, Key>
type GetSubModuleKeys<Module, Key> = Module extends { modules: infer SubModules }
? AddPrefix<
// ‘cart’
Key,
// ‘subCart/add’
GetModulesMutationKeys
: never
cart: {
mutations: {
add() { },
remove() { }
}
modules: {
subCart: {
mutations: {
add() { },
}
}
}
},
type GetModuleMutationKeys<Module, Key> =
// ‘cart/add’ | ‘cart | remove’
AddPrefix<Key, keyof GetMutations> |
// ‘cart/subCart/add’
GetSubModuleKeys<Module, Key>
type GetSubModuleKeys<Module, Key> = Module extends { modules: infer SubModules }
? AddPrefix<
// ‘cart’
Key,
// ‘subCart/add’
GetModulesMutationKeys
: never