【发布时间】:2022-01-02 20:26:02
【问题描述】:
想想 Typescript 中的以下代码行:
let x: 'a' | 'b' extends 'a' ? true : false;
我想知道x 的类型是否正确,因为直观上'a' | 'b' 是'a' 的扩展 版本(至少我的直觉是这样说的)。我认为extends 会像数学中的子集一样工作。 A extends Biff B ⊆ A.
但是,这里的x 的实际类型似乎是false。我想我不明白 extends 关键字究竟是如何工作的。
【问题讨论】:
-
如果
Y扩展X那么你可以在需要X的地方替换Y。您可以在需要'a'的地方替换'b'吗? -
@JeffBowman 那么,你的意思是我的直觉 (B ⊆ A) 实际上应该转向另一个方向 (A ⊆ B) 说
A extends B? -
超类有点像子类的子集(撇开抽象类不谈)——但一个字符不能是同一类型的两个不同字符的子集。
标签: javascript typescript types