11、重学TS-第十一题

64 阅读1分钟

实现一个 IsEqual 工具类型,用于比较两个类型是否相等。具体的使用示例如下所示:

type IsEqual<A, B> = // 你的实现代码

// 测试用例
type E0 = IsEqual<1, 2>; // false
type E1 = IsEqual<{ a: 1 }, { a: 1 }> // true
type E2 = IsEqual<[1], []>; // false

解法1:

type IsEqual<A, B> = [A] extends [B]
  ?[B] extends [A]
    ? true
    : false
  : false

解法2:

type IsEqual<A, B> = (() => A) extends (() => B)
  ? (() => B) extends (() => A)
    ? true
    : false
  : false