rambdax
Version:
Extended version of Rambda - a lightweight, faster alternative to Ramda
20 lines (19 loc) • 477 B
text/typescript
/**
* Ask TS to re-check that `A1` extends `A2`.
* And if it fails, `A2` will be enforced anyway.
* Can also be used to add constraints on parameters.
* @param A1 to check against
* @param A2 to cast to
* @returns `A1 | A2`
* @example
* ```ts
* import {A} from 'ts-toolbelt'
*
* type test0 = A.Cast<'42', string> // '42'
* type test1 = A.Cast<'42', number> // number
* ```
*/
export type Cast<A1 extends any, A2 extends any> =
A1 extends A2
? A1
: A2