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>>();