ExactMembers<Type, Keys>
A type that represents the members of a type.
Import:
import type { ExactMembers } from 'obsidian-dev-utils/type';Signature:
export type ExactMembers<Type extends LiteralKey, Keys extends readonly LiteralKey[]>Signature:
type ExactMembers<Type, Keys> = Exclude<Keys[number], Type> extends never ? Exclude<Type, Keys[number]> extends never ? Duplicates<Keys> extends [] ? Keys : `ERROR: Duplicate members: ${TupleToCSV<Duplicates<Keys>>}` : `ERROR: Missing members: ${TupleToCSV<UnionToTuple<Exclude<Type, Keys[number]>>>}` : `ERROR: Invalid members: ${TupleToCSV<UnionToTuple<Exclude<Keys[number], Type>>>}`Type: Exclude<Keys[number], Type> extends never ? Exclude<Type, Keys[number]> extends never ? Duplicates<Keys> extends [] ? Keys
: ERROR: Duplicate members: $\{TupleToCSV\<Duplicates\<Keys\>\>\}
: ERROR: Missing members: $\{TupleToCSV\<UnionToTuple\<[Exclude](https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers)\<Type, Keys[[number](https://www.typescriptlang.org/docs/handbook/basic-types.html#number)]\>\>\>\}
: ERROR: Invalid members: $\{TupleToCSV\<UnionToTuple\<[Exclude](https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers)\<Keys[[number](https://www.typescriptlang.org/docs/handbook/basic-types.html#number)], Type\>\>\>\}
Links to this page: