Тыкаюсь в ключевые слова, документацию и готовые рецепты, а что-то сложнее property?: someInterface не могу из себя выжать. generics, mapped types, keyof, всё понятно, пока это не начинает совмещаться в "нечто" отдалённо похожее на
type Flatten<T, O = never> = Writable<Cleanup<T>, O> extends infer U ?
U extends O ? U : U extends object ?
ValueOf<{ [K in keyof U]-?: (x: PrefixKeys<Flatten<U[K], O>, K, O>) => void }>
| ((x: U) => void) extends (x: infer I) => void ?
{ [K in keyof I]: I[K] } : never : U : never;
И тут я понимаю что ничего не понимаю.
type Flatten<T, O = never> = Writable<Cleanup<T>, O> extends infer U ? U extends O? U : U extends object ? ValueOf<{ [K in keyof U]-?: (x: PrefixKeys<Flatten<U[K], O>, K, O>) => void }> | ((x: U) => void) extends (x: infer I) => void ? { [K in keyof I]: I[K] } : never : U : never;
Обсуждают сегодня