“&”和“ |”之间有什么区别在打字稿中

时间:2018-10-26 06:59:39

标签: typescript

从打字稿的文档中,我知道“&”的意思是“路口类型”和“ |”代表“联盟类型”。但是我想知道以下示例有什么区别:

  type Type1 = number | boolean;
  type Type2 = number & boolean;

1 个答案:

答案 0 :(得分:1)

摘自官方Typescript文档:

  

联合类型描述的值可以是几种类型之一。我们   使用竖线(|)分隔每种类型,因此数字|字符串   布尔值是值的类型,可以是数字,字符串或   布尔值。

     

交集类型将多种类型组合为一种。这可以让你   将现有类型加在一起以得到具有所有   您需要的功能。例如,“ Person&Serializable&Loggable”是一个   人员和可序列化和可记录。这意味着这个的对象   类型将具有所有三种类型的所有成员。

用数字或布尔值之类的原始类型来解释它并不重要,但可以想象有两个这样的类:

export class Toto {

 FirstName: string;
 LastName: string;

}

export class Tata {

 PhoneNumber: number;

}

如果您编写type Type1 = Toto | Tata;,则您的Type1将是Toto实例或Tata实例,但不是两者。 但是,如果您编写type Type2 = Toto & Tata;,则您的Type2将是具有所有Toto和Tata属性(名字,姓氏和电话号码)的类型。

有关更多详细信息,请参见doc,在那里有很好的解释。