4 ms·
It's actually not in the standard library, but you can write it yourself: type Expect<T extends true> = T; `T extends true` puts a type constraint on the para
by gvergnaud 4y ago
It's actually not in the standard library, but you can write it yourself:
type Expect<T extends true> = T;
`T extends true` puts a type constraint on the parameter, which then needs to be assignable to the literal type `true` to type-check.
- theteapot 4y agoOK cool, now what about `Equal` :).
- triyambakam 4y agotype Equal<A, B> = A extends B ? (B extends A ? true : false) : false;
- theteapot 4y agoNice.
- gvergnaud 4y agoActually, this won't work with union types! The definition of `Equal` I use is this one: type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends < T >() => T extends Y ? 1 : 2 ? true : false; Understanding this requires a bit more context, but I'll explain why we need something so complicated in the Advanced Union Types chapter :) I picked it from https://github.com/type-challenges/type-challenges https://github.com/type-challenges/type-challenges which is an awesome resource too