type-fest
type-fest copied to clipboard
IsBivariant
Type description + examples
Most of the time when I want to test for equality, I actually care about mutual assignability (aka bivariance), not exact equality.
import {IsEqual, And} from 'type-fest'
type IsBivariant<T1, T2> = And<T1 extends T2 ? true : false, T2 extends T1 ? true : false>;
type T1 = { k: string }
type T2 = { k: string }
type T3 = T1 | T2
type test1 = IsEqual<T1, T3>; // false
type test2 = IsBivariant<T1, T3>; // true
https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbwJIGcCiBHArgQwDYA0cAggHYAmAvnAGZQQhwDkMAnmAKYC0NHKMTAFCC2nOKgBCwAG44owHKRgAeACoBGIqoBMAPjgBeEhTXq4HAB4wOFFHB1wA-HBhQsHOAC5a+FBy3a5lY25HYaTi5uHt40vhy6ANzCoh7hRghwANbe-PKkAOZwlCLsqYHpWTmuwAVFJWKqAMyG9mYAPvbayaUufDBmRqiYuHimWo2JcAD0Uz54fvUe1vzl4ihSsvKKKhrjkzOR7sJAA
Type source
No response
Search existing types and issues first
- [X] I tried my best to look for it