# 18-获取元组长度

# 题目描述

创建一个通用的Length,接受一个readonly的数组,返回这个数组的长度。

例如:

type tesla = ['tesla', 'model 3', 'model X', 'model Y'];
type spaceX = [
  'FALCON 9',
  'FALCON HEAVY',
  'DRAGON',
  'STARSHIP',
  'HUMAN SPACEFLIGHT',
];

type teslaLength = Length<tesla>; // expected 4
type spaceXLength = Length<spaceX>; // expected 5

# 分析

这题还是元组的特性,元组本身非常类似于 js 中的数组,其本身属性中就有 length 属性,故只需要利用 ts 中的 索引访问 (opens new window) 即可获取元组的长度。 T['length']。此处需要注意和 11-元组转换为对象 中的索引签名访问区分开,此处的 length 是属性,故需要用单引号进行包裹,而 T[number] 不需要。

# 题解

type Length<T extends readonly any[]> = T['length'];

# 知识点

  1. 元组类型,可以直接通过 length 属性访问长度, T['length']
Last Updated: 2023/5/16 06:00:28