首页 > 解决方案 > 这种检查两种类型是否属于同一类型的方法如何工作?

问题描述

类型Equal定义如下

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

我尝试编写如下代码:

type Foo<X> = <T>() => T extends X ? 1 : 2;
var a: Foo<number> = true;
var b: Foo<boolean> = true;
var c: Foo<any> = true;
var d: Foo<number> = 42;
var e: Foo<boolean> = 42;
var f: Foo<any> = 42;
var g: Foo<number> = () => true;
var h: Foo<boolean> = () => true;
var i: Foo<any> = () => true;
var j: Foo<number> = () => 42;
var k: Foo<boolean> = () => 42;
var l: Foo<any> = () => 42;

但没有一个是正确的

这是如何运作的?

标签: typescript

解决方案


推荐阅读