type GetLength2<T extends any[]> = T['length']
type a = GetLength2<[1]> // 1
type GetLength3<T extends string> = T['length']
type e = GetLength3<'abc'> // number
数组的length属性返回具体值,但是字符串的length属性返回数字类型,为什么?
The [1]
in GetLength2<[1]>
不仅仅是一个数组,它是一个tuple https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types。元组是特殊类型,它定义数组每个索引处的值,并定义数组的长度。由于元组定义了长度,GetLength2
得到特定的长度。如果您使用普通数组而不是元组(例如,GetLength2<number[]>
),结果将是number
.
虽然字符串确实有一些专门的变体可供使用(例如,模板字符串类型),但它们没有任何类似于元组的东西。方式'abc'
不包括该信息length
属性将返回 3。也许这是他们将来可以添加到语言中的东西,但现在还没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)