Skip to content

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: