abacus-ts
Version:
Mini calculator implemented by only TypeScript type operation
16 lines (12 loc) • 377 B
text/typescript
type AssertSuccess = {
readonly ok: unique symbol;
};
export type AssertSub<T1, T2> = T1 extends T2 ? AssertSuccess : [actual: T1, expected: T2];
export type AssertIs<T1, T2> = T1 extends T2
? T2 extends T1
? AssertSuccess
: [actual: T1, expected: T2]
: [actual: T1, expected: T2];
export type TestSuite = {
[caseName: string]: TestSuite | AssertSuccess;
};