TypeScript 中 Tuple type of length has no element at index X 错误
当我们在 TypeScript 中声明一个元组并尝试访问一个不存在的索引处的元素时,会出现错误“Tuple type of length has no element at index”。 要解决该错误,需要调整元组的长度或改为声明 type[]
。
下面是发生上述错误的示例。
const arr: [string] = ['example'];
// ⛔️ Error: Tuple type '[string]' of length
// '1' has no element at index '1'.ts(2493)
console.log(arr[1]);
我们声明了一个只包含单个元素的元组,并试图访问索引为 1 的元素。
数组(和元组)的索引是从零开始的,因此元组在索引 0 处没有元素,类型检查器会抛出错误。
如果需要声明数组而不是元组,请使用以下语法。
const arr: string[] = ['example'];
console.log(arr[1]); // 👉️ undefined
请注意
,我们将特定类型的数组声明为Type[]
而不是[Type]
。
以下示例说明了如何声明多种类型的数组和对象数组。
// ✅ Array of mixed types
const mixedArr: (string | number)[] = ['hello', 100];
// ✅ Array of objects
const arrOfObjects: { id: number; name: string }[] = [
{
id: 1,
name: 'Tom',
},
{
id: 2,
name: 'James',
},
];
如果我们打算使用元组,则必须调整元组的长度或我们访问元组的索引。
const arr: [string, string] = ['hello', 'world'];
console.log(arr[1]); // 👉️ "world"
上面的示例声明了一个包含 2 个字符串类型元素的元组。
元组类型允许我们用固定数量的元素来表达一个数组,这些元素的类型是已知的,但可以不同。
这很有用,因为如果你不正确地初始化数组,你会得到一个错误。
// ⛔️ Error: Type 'number' is not
// assignable to type 'string'.ts(2322)
const arr: [string, string] = ['hello', 100];
在现有索引处访问元组元素时,TypeScript 知道值的类型。
const arr: [string, number] = ['hello', 100];
console.log(arr[0].toUpperCase()); // 👉️ "HELLO"
console.log(arr[1].toFixed(2)); // 👉️ 100.00
正如我们所见,当我们尝试访问不存在的索引处的元组元素时,TypeScript 也会提醒我们。
const arr: [string, number] = ['hello', 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]'.
const arr: [string, number] = ['hello'];
如果在初始化数组时没有所有必要的值,请使用 let
关键字来声明元组。
相关文章
在 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 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。