TypeScript 中定义具有多种类型的数组
使用联合类型在 TypeScript 中定义具有多种类型的数组,例如 const arr: (string | number)[] = ['a', 1]
。 联合类型由两个或多个其他类型组成。 示例中的数组只能包含字符串和数字类型的值。
const arr1: (string | number)[] = ['a', 'b', 1, 2];
我们使用联合类型来创建具有多种类型的数组。
联合类型可以根据需要由任意多的类型构成。
const arr1: (string | number | boolean)[] = ['a', 1, true];
如果我们尝试将一个元素添加到与联合不兼容的类型的数组中,则会出现错误。
const arr1: (string | number)[] = ['a', 1];
// ⛔️ Error: Argument of type '{ hello: string; }' is
// not assignable to parameter of type 'string | number'.
arr1.push({ hello: 'world' });
我们还可以使用这种方法来定义一个包含多种类型对象的数组。
type Bird = {
canFly: boolean;
};
type Dog = {
canSwim: boolean;
};
const bird: Bird = {
canFly: true,
};
const dog: Dog = {
canSwim: false,
};
const arr1: (Bird | Dog)[] = [bird, dog];
if ('canFly' in arr1[0]) {
console.log(arr1[0].canFly); // 👉️ true
} else {
console.log(arr1[0].canSwim);
}
我们有 Bird 和 Dog 类型的对象,它们具有不同的属性和类型。 该数组可以包含两种类型的元素。
请注意
,我们必须使用类型保护才能访问数组中对象的属性。
canFly
属性只包含在 Bird 类型中,因此在我们能够访问该属性之前,我们必须确保数组中的元素是 Bird 类型。
如果我们有一个包含多种类型并具有预定义长度和顺序的数组,则可以使用元组。
const arr: [string, number] = ['x', 100];
我们指定上面数组中的第一个元素是字符串类型,第二个元素是数字类型。
元组类型允许我们用固定数量的元素来表达一个数组,这些元素的类型是已知的,但可以不同。
这很有用,因为如果你不正确地初始化数组,你会得到一个错误。
// ⛔️ Error: Type 'number' is not
// assignable to type 'string'.ts(2322)
const arr: [string, number] = [100, 'x'];
当访问现有索引处的元素时,TypeScript 知道值的类型。
const arr: [string, number] = ['x', 100];
// ✅ TypeScript knows first element is string
console.log(arr[0].toUpperCase()); // 👉️ "X"
// ✅ TypeScript knows second element is number
console.log(arr[1].toFixed(2)); // 👉️ 100.00
如果我们尝试访问索引不存在的元组元素,类型检查器会抛出错误。
const arr: [string, number] = ['x', 100];
// ⛔️ Error: Tuple type '[string, number]' of length '2'
// has no element at index '2'.ts(2493)
console.log(arr[2]);
如果使用 const
关键字来声明元组,则必须使用已为其指定类型的所有值来初始化数组。
// ⛔️ Error: Type '[string]' is not assignable
// to type '[string, number]'.
// Source has 1 element(s) but target requires 2.ts(2322)
const arr: [string, number] = ['x'];
如果在初始化数组时没有所有必要的值,请使用 let
关键字来声明元组。
相关文章
在 C 语言中获取字符数组的长度
发布时间:2023/05/07 浏览次数:166 分类:C语言
-
本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。
如何在 C 语言中获取数组的大小
发布时间:2023/05/07 浏览次数:92 分类:C语言
-
本教程介绍了 C 语言中确定数组大小的方法。本教程介绍了在 C 语言中使用 sizeof()运算符的方法。
C 语言中复制字符数组
发布时间:2023/05/07 浏览次数:117 分类:C语言
-
本文介绍了如何在 C 语言中复制字符数组。使用 memcpy 函数在 C 语言中复制一个字符数组 char 数组可能是 C 代码中最常用的数据结构,复制数组内容是它的核心操作之一。
Django ArrayField 数组字段
发布时间:2023/05/04 浏览次数:168 分类:Python
-
在本文中,我们将学习在 Django 数据库模型中使用 ArrayFields。Django中的ArrayField类似于Java、C、C++等其他编程语言中的数组数据结构,存储相同数据类型的多个值。
计算 Java 数组中的重复元素
发布时间:2023/05/01 浏览次数:202 分类:Java
-
本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。