当前位置: 首页 > 知识库问答 >
问题:

排除定义冲突

齐起运
2023-03-14

混乱之处在于,如果三元条件返回false,它是否应该返回T-U而不是T,因为我们可能只想返回T-U属性,以防T不是U的扩展。

让我们举一个例子1

U = "name", T = "id" | "name";

如果我理解正确的话,TextendsU在本例中是false,因为T没有从U继承所有属性。因此,我们应该返回t-u,即“id”,这是exclude运算符的期望输出。

U = "name", T = "id" | "email"

那么,正确的定义是什么,即T扩展U?从不:tt扩展u?从不:T-U

共有1个答案

松鸣
2023-03-14

正如@ArtCorpse在评论中所说,条件类型是这样解析的:

with T = A | B | C;

T extends U ? X : Y

手段

(A extends U ? X : Y) | (B extends U ? X : Y) | (C extends U ? X : Y)

所以在你的例子中:

U = "name";
T = "id" | "name";

T extends U ? X : Y
=>
("id" extends "name" ? never | "id") | ("name" extends "name" ? never | "id")
=>
"id" | never
=>
"id"
 类似资料:
  • 我试图从循环中排除自定义分类法类别中的项目(slg: Private-Case-research,ID: 5)。我正在使用以下代码,有人有建议或想法为什么它不起作用吗?提前感谢!

  • 自定义缓冲函数 在第八章中,我们给时钟项目添加了动画。看起来很赞,但是如果有合适的缓冲函数就更好了。在显示世界中,钟表指针转动的时候,通常起步很慢,然后迅速啪地一声,最后缓冲到终点。但是标准的缓冲函数在这里每一个适合它,那该如何创建一个新的呢? 除了+functionWithName:之外,CAMediaTimingFunction同样有另一个构造函数,一个有四个浮点参数的+functionWit

  • 问题内容: 我有这样的查询: 但是,当我打印出来时,它会自动进行1,2,3,4,5的排序。我们如何在不更改数据库结构的情况下保持顺序(2,4,1,5,3)? 谢谢! 问题答案: 我问这个: mysql按问题排序 我得到的答案和所有功劳归于他们: 您可以使用CASE运算符指定顺序: 在PHP中,你可以像这样:

  • 问题内容: 我有一个问题:这是由ElementTree库形成的列表列表。 word1..4可能包含Unicode字符,即(â,ü,ç)。 我想按我的自定义字母对列表列表进行排序。 我知道如何从这里按python中的单词对自定义字母进行排序 我也知道如何从此处http://wiki.python.org/moin/HowTo/Sorting按键排序 问题是我找不到如何应用这两种方法对“列表列表”进行

  • 有的时候我们希望排序不是仅仅按照自然顺序排序。例如,我们希望按照字符串的长度来对一个字符串数组排序而不是按照字母顺序来排序。这里我们介绍一下Go的自定义排序。 package main import "sort" import "fmt" // 为了能够使用自定义函数来排序,我们需要一个 // 对应的排序类型,比如这里我们为内置的字符串 // 数组定义了一个别名ByLength type ByLe