TypeScript 中的元组解构是如何工作的?


TypeScript 中,元组是一个包含不同数据类型值的集合。元组的长度总是预定义的。它类似于数组,但数组只包含一种数据类型的数值,而元组包含多种数据类型的数值。

解构 元组意味着将元组中的值分别赋给不同的变量。例如,我们需要在代码块中多次使用元组值。我们可以将所有值分别赋给变量,并在需要元组值时使用这些变量,而不是每次都通过索引访问元组中的值。

语法

用户可以按照以下语法在 TypeScript 中进行元组解构。

type sample_tuple_type = [string, number];
let sample_tuple: sample_tuple_type = ["Default", 24];
let [value1, value2] = sample_tuple;

我们在上面的语法中使用了 `type` 关键字创建了类型。之后,我们创建了 `sample_tuple_type` 类型的元组。接下来,我们解构了元组并将元组值分别赋给了 `value1` 和 `value2` 变量。

现在,让我们来看一些不同的例子,学习如何在 TypeScript 中进行元组解构

示例 1

在下面的示例中,我们为元组创建了类型。我们可以创建 `tuple_type` 类型的元组。`tuple1` 包含根据 `tuple_type` 定义的五个不同值。

之后,我们创建了五个名为 `var1, var2` 等的变量,并在解构 `tuple1` 后将元组值存储到这些变量中。用户可以在输出中观察到 `var1` 变量包含元组第 0 个索引的值,其他变量也一样。

type tuple_type = [boolean, number, string, number, boolean];
let tuple1: tuple_type = [true, 23, "Hi", 90, false];
let [var1, var2, var3, var4, var5] = tuple1;
console.log("The values of tuple variables are");
console.log(var1);
console.log(var2);
console.log(var3);
console.log(var4);
console.log(var5);

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

var tuple1 = [true, 23, "Hi", 90, false];
var var1 = tuple1[0], var2 = tuple1[1], var3 = tuple1[2], var4 = tuple1[3], var5 = tuple1[4];
console.log("The values of tuple variables are");
console.log(var1);
console.log(var2);
console.log(var3);
console.log(var4);
console.log(var5);

输出

上述代码将产生以下输出:

The values of tuple variables are
true
23
Hi
90
false

示例 2

在这个例子中,`tuple2` 也是 `tuple_type` 类型,但它只包含三个数值和字符串类型的值。之后,我们声明了 `num1` 和 `num2` 变量,用于在解构元组时将元组中的数值存储到变量中。

用户可以看到我们在解构时如何跳过元组中的值。因此,我们可以在解构元组时只取所需的值。`num1` 包含第 0 个索引的值,而 `num2` 变量包含元组第 2 个索引的值。我们跳过了第 1 个索引的元组值。

// defining the tuple type
type tuple_type = [number, string, number];
// creating the tuple
let tuple2: tuple_type = [56, "TutorialsPoint", 32];
// defining some variables
let num1: number = 0;
let num2: number = 0;

//  destructuring the tuple2
[num1, , num2] = tuple2;

console.log("The number values of tuples are");
console.log(num1);
console.log(num2);

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

// creating the tuple
var tuple2 = [56, "TutorialsPoint", 32];

// defining some variables
var num1 = 0;
var num2 = 0;

//  destructuring the tuple2
num1 = tuple2[0], num2 = tuple2[2];
console.log("The number values of tuples are");
console.log(num1);
console.log(num2);

输出

上述代码将产生以下输出:

The number values of tuples are
56
32

示例 3

在下面的示例中,元组包含大约九个值。因此,与其创建九个变量来存储元组值,我们将其中的三个值存储在一个不同的变量中,其余六个值存储在一个变量中。

我们使用了扩展运算符将最后六个值放入 `otherValues` 变量中。在输出中,用户可以看到 `otherValues` 变量是一个包含六个元素的数组。

因此,用户可以使用这种方法使用扩展运算符将元组解构到数组中。

type data_type = [
   number,
   number,
   string,
   string,
   string,
   boolean,
   number,
   string,
   number
];

let data_tuple: data_type = [
   43,
   56,
   "TypeScript",
   "JS",
   "TutorialsPoint",
   false,
   67,
   "TS",
   90,
];

// otherValues variable stores all remaining values
let [number1, number2, string1, ...otherValues] = data_tuple;

console.log(number1);
console.log(number2);
console.log(string1);
console.log(otherValues);

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

var data_tuple = [
   43,
   56,
   "TypeScript",
   "JS",
   "TutorialsPoint",
   false,
   67,
   "TS",
   90,
];
// otherValues variable stores all remaining values
var number1 = data_tuple[0], number2 = data_tuple[1], string1 = data_tuple[2], otherValues = data_tuple.slice(3);
console.log(number1);
console.log(number2);
console.log(string1);
console.log(otherValues);

输出

上述代码将产生以下输出:

43
56
TypeScript
[ 'JS', 'TutorialsPoint', false, 67, 'TS', 90 ]

示例 4

下面的示例演示了如何创建一个包含可选属性的元组以及如何将它们解构到多个变量中。在 `optional_tuple` 中,最后一个元素是可选的。因此,`tuple5` 只包含两个元素。

在输出中,`variable6` 的值为 `undefined`,因为 `tuple5` 只包含两个值。

// last values is optional in tuple
type optional_tuple = [string, number, number?];

// creating tuples with and without optional parameters
let tuple4: optional_tuple = ["Hello", 89, 90];
let tuple5: optional_tuple = ["Hi", 76];

// destructuring the tuple4
let [variable1, variable2, variable3] = tuple4;
console.log("Tuple4 values are");
console.log(variable1);
console.log(variable2);
console.log(variable3);

// destructuring the tuple5
let [variable4, variable5, variable6] = tuple5;
console.log("Tuple5 values are");
console.log(variable4);
console.log(variable5);
console.log(variable6);

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

// creating tuples with and without optional parameters
var tuple4 = ["Hello", 89, 90];
var tuple5 = ["Hi", 76];

// destructuring the tuple4
var variable1 = tuple4[0], variable2 = tuple4[1], variable3 = tuple4[2];
console.log("Tuple4 values are");
console.log(variable1);
console.log(variable2);
console.log(variable3);

// destructuring the tuple5
var variable4 = tuple5[0], variable5 = tuple5[1], variable6 = tuple5[2];
console.log("Tuple5 values are");
console.log(variable4);
console.log(variable5);
console.log(variable6);

输出

上述代码将产生以下输出:

Tuple4 values are
Hello
89
90
Tuple5 values are
Hi
76
undefined

在本教程中,用户学习了如何解构元组。在第一个示例中,我们学习了普通的元组解构,第二个示例演示了在解构时跳过元组中的值。从第三个示例中,我们可以学习如何将元组值解构到数组中,从最后一个示例中,我们可以学习如何解构包含可选值的元组。

更新于:2023年1月20日

1K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告