TypeScript 元组

类型化数组

tuple 是一个类型化的 array - 为每个索引定义长度和类型。

元组很有用,因为它们允许数组中的每个元素都是已知类型的值。

要定义一个元组,请指定数组中每个元素的类型:

实例

// 定义元组
let ourTuple: [number, boolean, string];

// 正确初始化
ourTuple = [5, false, 'Coding God was here'];

亲自试一试 »

如您所见,我们有一个数字、布尔值和一个字符串。 但是如果我们尝试以错误的顺序设置它们会发生什么:

实例

// 定义元组
let ourTuple: [number, boolean, string];

// 初始化不正确会引发错误
ourTuple = [false, 'Coding God was mistaken', 5];
亲自试一试 »

即使我们有 booleanstringnumber 元组中的顺序很重要,会抛出错误。


只读元组

一个好的做法是让你的 tuple readonly 只读。

元组的初始值只有强定义的类型:

实例

// 定义元组
let ourTuple: [number, boolean, string];
// 正确初始化
ourTuple = [5, false, 'Coding God was here'];
// 对于索引 3+,我们的元组中没有类型安全
ourTuple.push('Something new and wrong');
console.log(ourTuple);
亲自试一试 »

您会看到新的 valueTuples 仅具有用于初始值的强定义类型:

实例

// 定义只读元组
const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God'];
// 抛出错误,因为它是只读的。
ourReadonlyTuple.push('Coding God took a day off');
亲自试一试 »

要了解有关 readonly 等访问修饰符的更多信息,请转到我们在此处的相关部分:TypeScript Classes .

如果你在使用元组之前曾经使用过 React。

useState 返回一个值的元组和一个 setter 函数。

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;

要查看解构,请查看此处


TypeScript 练习

学习训练

训练:

对于元组,值类型的顺序无关紧要:



开始训练