Skip to content

Latest commit

 

History

History
34 lines (25 loc) · 1.02 KB

Equal.md

File metadata and controls

34 lines (25 loc) · 1.02 KB
标题 标签
Equal(判断 2 个类型是否相等) extends(继承)

判断 2 个类型是否相等。

  • 将两个比较泛型类型参数构造成函数的返回值,如果函数参数类型匹配,则返回 1 否则返回 2,然后比较 2 个返回值是否相等,即可确定 2 个类型是否相同。

代码如下:

type Equal<T, U> = (<X>() => X extends T ? 1 : 2) extends <X>() => X extends U
  ? 1
  : 2
  ? true
  : false;

使用方式:

type EqualRes1 = Equal<any, any>; // true
type EqualRes2 = Equal<any, never>; // false
type EqualRes3 = Equal<string, never>; // false
type EqualRes4 = Equal<number, never>; // false
type EqualRes5 = Equal<number, string>; // false
type EqualRes6 = Equal<number, 1>; // false

应用场景

如下所示,鼠标悬浮到对应的类型变量可以查看类型。