TypeScript - 联合类型



TypeScript 使程序能够组合一个或两个类型。联合类型是表达可以是多种类型之一的值的强大方法。使用管道符号 (|) 组合两个或多个数据类型来表示联合类型。换句话说,联合类型写成用竖线分隔的类型序列。

语法:联合字面量

我们在 TypeScript 中使用管道符号 (|) 来组合两种或多种类型以实现联合类型 -

Type1 | Type2 | Type3 

联合类型变量

我们可以定义一个不同类型联合类型的变量。例如,

let value: number | string | boolean;

在上面的示例中,我们定义了一个名为 value 的联合类型变量。我们可以为该变量分配数字、字符串或布尔值。

示例:联合类型变量

在下面的示例中,变量的类型是联合类型。这意味着变量可以包含数字或字符串作为其值。

var val: string | number 
val = 12 
console.log("numeric value of val: "+val) 
val = "This is a string" 
console.log("string value of val: "+val)

编译后,它将生成以下 JavaScript 代码。

var val;
val = 12;
console.log("numeric value of val: " + val);
val = "This is a string";
console.log("string value of val: " + val);

上述示例代码的输出如下 -

numeric value of val: 12 
string value of val: this is a string 

联合类型和函数参数

我们可以定义一个具有联合类型参数的函数。当您可以调用该函数时,您可以传递联合类型中任何类型的参数。例如,

function display(name: string | string[]){
   // function body;
}

在上面的代码片段中,函数 display() 具有联合类型(字符串或字符串数组)的参数。您可以调用该函数,传递字符串或字符串数组作为参数。

示例

在下面的示例中,我们定义了一个名为 disp 的函数,它具有联合类型参数。

函数 disp() 可以接受字符串或字符串数组类型的参数。

function disp(name: string|string[]) { 
   if(typeof name == "string") { 
      console.log(name) 
   } else { 
      var i; 
      
      for(i = 0;i<name.length;i++) { 
         console.log(name[i])
      } 
   } 
} 
disp("mark") 
console.log("Printing names array....") 
disp(["Mark","Tom","Mary","John"])

编译后,它将生成以下 JavaScript 代码。

function disp(name) {
   if (typeof name == "string") {
      console.log(name);
   } else {
      var i;
      for (i = 0; i < name.length; i++) {
         console.log(name[i]);
      }
   }
}

disp("mark");
console.log("Printing names array....");
disp(["Mark", "Tom", "Mary", "John"]);

输出如下 -

Mark 
Printing names array…. 
Mark 
Tom
Mary
John 

联合类型和数组

联合类型也可以应用于数组、属性和接口。以下说明了联合类型与数组的用法。

示例

程序声明一个数组。该数组可以表示数字集合或字符串集合。

var arr: number[]|string[]; 
var i: number; 
arr = [1,2,4] 
console.log("**numeric array**")  

for(i = 0;i<arr.length;i++) { 
   console.log(arr[i]) 
}  

arr = ["Mumbai","Pune","Delhi"] 
console.log("**string array**")  

for(i = 0;i<arr.length;i++) { 
   console.log(arr[i]) 
} 

编译后,它将生成以下 JavaScript 代码。

var arr;
var i;
arr = [1, 2, 4];
console.log("**numeric array**");

for (i = 0; i < arr.length; i++) {
   console.log(arr[i]);
}
arr = ["Mumbai", "Pune", "Delhi"];
console.log("**string array**");

for (i = 0; i < arr.length; i++) {
   console.log(arr[i]);
}

输出如下 -

**numeric array** 
1 
2 
4 
**string array** 
Mumbai 
Pune 
Delhi
广告