TypeScript
Same Type Assertion
You can check whether two types are the same by using the following type helper.
typescript
type Equals<X, Y> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? true : false;
The Equals<X, Y>
type helper resolves to true
when X
and Y
are the same type. Otherwise, it resolves to false
.
Here is the original code for Equals
: https://github.com/Microsoft/TypeScript/issues/27024#issuecomment-421529650.
To go one step further, you can create a noop function that forces a type error when X
and Y
are not the same type like this:
typescript
const assertSameType = <T extends true>() => {
// noop
};
assertSameType<Equals<X, Y>>();