Skip to content

TypeAsserter<Type>

A helper that captures a type parameter and provides methods for compile-time exhaustiveness checks.

  • assertAllKeys is available when Type is an object type. - assertAllMembers is available when Type is a literal key union (string | number).

Import:

import { TypeAsserter } from 'obsidian-dev-utils/type';

Example:

type A = { a: 1, b: 2, c: 3 };
new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c']); // OK
new TypeAsserter<A>().assertAllKeys(['c', 'a', 'b']); // OK, order is ignored
new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c', 'd']); // Error: Invalid members: d
new TypeAsserter<A>().assertAllKeys(['a', 'b']); // Error: Missing members: c
type B = 1 | 2 | 3 | 'a';
new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a']); // OK
new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a', 4]); // Error: Invalid members: 4
new TypeAsserter<B>().assertAllMembers([1, 2, 3]); // Error: Missing members: a

Signature:

export class TypeAsserter<Type>

Constructor

new TypeAsserter()

Creates a type asserter that captures Type for compile-time exhaustiveness checks.

Properties

PropertyTypeDescription
assertAllKeysTypeAssertions<Type>['assertAllKeys']Asserts that all keys of an object type are present in a list of keys.
assertAllMembersTypeAssertions<Type>['assertAllMembers']Asserts that all members of a union type are present in a list of members.