TypeScript 元组
类型化数组
一个元组是一个类型化的,具有预定义长度和每个索引类型的数组。
元组很棒,因为它们允许数组中的每个元素都是已知类型的值。
要定义一个元组,请指定数组中每个元素的类型
示例
// 定义我们的元组
let ourTuple: [number, boolean, string];
// 正确初始化
ourTuple = [5, false, 'Coding God was here'];
自己试试 »
如您所见,我们有一个数字、布尔值和一个字符串。但是,如果我们尝试以错误的顺序设置它们会发生什么情况呢?
示例
// 定义我们的元组
let ourTuple: [number, boolean, string];
// 初始化错误,导致错误
ourTuple = [false, 'Coding God was mistaken', 5];
自己试试 »
即使我们有boolean
、string
和number
,顺序在我们的元组中也很重要,并且会引发错误。
只读元组
一个好的做法是将您的元组设为readonly
。
元组仅对初始值具有强类型定义
示例
// 定义我们的元组
let ourTuple: [number, boolean, string];
// 正确初始化
ourTuple = [5, false, 'Coding God was here'];
// 对于索引 3+,我们的元组没有类型安全
ourTuple.push('Something new and wrong');
console.log(ourTuple);
自己试试 »
您会看到新的值元组仅对初始值具有强类型定义
示例
// 定义我们的只读元组
const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God'];
// 由于它是只读的,因此会引发错误。
ourReadonlyTuple.push('Coding God took a day off');
自己试试 »
要了解有关readonly
等访问修饰符的更多信息,请访问我们此处关于它们的章节:TypeScript 类。
如果您以前使用过 React,那么您很可能已经使用过元组了。
useState
返回一个包含值和设置函数的元组。
const [firstName, setFirstName] = useState('Dylan')
是一个常见的例子。
由于结构,我们知道列表中的第一个值将是特定值类型,在本例中为string
,第二个值为function
。
命名元组
命名元组允许我们为每个索引处的值提供上下文。
示例
const graph: [x: number, y: number] = [55.2, 41.3];
命名元组为我们的索引值代表什么提供了更多上下文。
解构元组
由于元组是数组,因此我们也可以解构它们。
示例
const graph: [number, number] = [55.2, 41.3];
const [x, y] = graph;
要复习解构,请查看此处。