type-fest icon indicating copy to clipboard operation
type-fest copied to clipboard

IsBivariant

Open innermatrix opened this issue 1 year ago • 0 comments

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

innermatrix avatar Oct 23 '24 06:10 innermatrix