当前位置: 代码迷 >> 综合 >> 以这个 cart 模块为例,分解一下每个工具类型得到的结果:
  详细解决方案

以这个 cart 模块为例,分解一下每个工具类型得到的结果:

热度:96   发布时间:2023-12-22 12:30:24.0

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