TypeScript 元组

有时我们喜欢将值存储在一个具有特定类型的阵列中。使用任何类型当然可以解决这个问题,但它也将允许我们可能不想要的某些类型。

假设我们想要创建一个用户名和一个用户ID用户数组;

1let user: any;
2let userId = 1;
3let userName = "Alf";
4
5let randomBoolean = true;
6
7user = [userId, userName]; // valid
8user = [userId, randomBoolean]; // also valid

通过将我们的用户设置为任何类型,我们可以将任何类型分配给它,这打败了我们有一个用户ID的目的,这是一个号码和一个用户名,这是一个字符串类型。

1let user: [number,string];
2let userId = 1;
3let userName = "Alf";
4let randomBoolean = true;
5
6user = [userId, userName]; // valid
7user = [userId, randomBoolean]; // error: Type 'true' is not assignable to type 'string'

我们定义一个 tuple,将我们的预期类型放置在方块上,在这种情况下将一个数字和一个字符串分隔开来。

**True类型不能分配给键入string

这是因为我们定义了我们的来接受一个字符串,因为它是第二个输入,但我们通过了一个布尔

在 tuple 中访问元素

要访问一个tuple中的元素,我们会像在一个数组中一样使用它的索引。

1console.log(user[0])  // 1
2console.log(user[1])  // Alf

Tuples 变得非常有用,当我们想创建一个字典或一个关键值对. 使用我们从上面的例子,我们可以有一个用户名和他们的ID,而不会错误地通过一个不同的类型来创建问题后。

1let users: [number, string][] = [[1,"Alf"],[2,"Jane"],[3,"Nii"]];

<$>[注] 将值分配给一个tuple时,前两个值必须准确匹配tuple中定义的类型。

例如,在上面的例子中,我们的第一个元素必须是数字,第二个元素必须是字符串

1let user: [number,string];
2user = ["Alf", 1]; // invalid

上面的代码是无效的,因为用户希望第一个元素是数字,第二个元素是字符串,但不是相反。

<$>[注]我们将任何后续值添加到tuple变量可以是任何预定义tuple类型在没有特定的顺序。

1user[2] = "John"; // valid
2user[3] = 4; // valid
3user[4] = true; // invalid.

在上面的代码中,由于tuple被声明为数字字符串,我们可以输入任何字符串数字的元素,只要它们不是前两种元素,否则我们仍然不能将一个boolean值分配给一个元素,因为tuple没有被声明为boolean类型。

是的!希望你发现这篇文章有用。

Published At
Categories with 技术
Tagged with
comments powered by Disqus