typescript / intermediate
Snippet
Type-Level Unit Testing with Conditional Type Assertions
Conditional generic functions evaluate exact type equality during compilation. Attempting to assign a false evaluation to AssertTrue causes a build-time test failure if type definitions diverge.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2)? true: false;type AssertTrue<T extends true> = T;type User = { readonly id: number; name: string };type MutableUser = { id: number; name: string };type TestReadonlyCheck = AssertTrue<Equals<User, MutableUser>>;
Breakdown
1
type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2)
Leverages generic function assignment compatibility to evaluate exact type equality.
2
type AssertTrue<T extends true> = T;
Enforces that a type parameter must strictly evaluate to true at compile time.
3
type TestReadonlyCheck = AssertTrue<Equals<User, MutableUser>>;
Triggers a compilation error if two types do not match identically in test suites.