Typescript中的“命名或标记的元组”是什么?

问题描述

阅读Typescript 4.0中的更改后,我发现了新功能

标签元组元素

我认为元素可以通过数字(例如在元组和列表中)或通过键(例如在字典中)进行索引。我不希望它们会同时被索引。

我的问题是:

  • 为什么/何时应该使用命名元组而不是普通元组

解决方法

这纯粹是出于文档目的,没有语义。它们只是将名称放入类型签名中的一种方法-它们的类型检查与不带名称的元组相同,并且运行时行为也相同。

虽然它们对类型检查没有影响,但元组位置上缺少标签会使它们更难使用,也难以传达我们的意图。

添加了重点。

每当要记录元组中元素的名称在使用它们的函数的类型签名中时,请使用它们。

示例

您可能有Range类型,即[start,end]

type Range = [start: number,end: number];

或者您的Range类型可能是[start,length]

type Range = [start: number,length: number];

或者您可以使用未命名的元组:

type Range = [number,number];

就TypeScript而言,这三个定义具有相同的语义。您可以通过数组访问(例如arr[0])来解构来访问成员,就像其他数组一样,它们并不特殊。您不能再通过名称访问元素...,这些只是普通的JavaScript数组对象。