за UnionToTuple, то можно через него:
type OneKey<TBase, T extends TBase> =
UnionToTuple<keyof T> extends [infer U]
? ({
[K in U]: boolean
} & {
[K in keyof TBase]?: never
})
: never
Но это выйдет использовать без явного указания типа только в функциях и мб потребует каст в теле функции:
function x<T extends FooBar>(...[v]: [OneKey<FooBar, T>])
Этого мне было бы достаточно. Найти/сделать бы теперь этот UnionToTuple...
Обсуждают сегодня