gpt4 book ai didi

typescript - 为什么数组和字符串的长度属性有不同的返回类型?

转载 作者:行者123 更新时间:2023-12-05 02:33:54 25 4
gpt4 key购买 nike

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属性返回的是数字类型,为什么?

最佳答案

[1]GetLength2<[1]>不仅仅是一个数组,它是一个 tuple .元组是特殊类型,它定义数组每个索引处的值,还定义数组的长度。由于元组定义长度,GetLength2得到那个特定的长度。如果您使用普通数组而不是元组(例如 GetLength2<number[]> ),结果将是 number .

虽然字符串确实有一些特殊的变体可供使用(例如,模板字符串类型),但它们没有任何像元组那样的东西。类型'abc'不包括 length 的信息属性将返回 3。也许这是他们将来可以添加到语言中的东西,但现在还没有。

关于typescript - 为什么数组和字符串的长度属性有不同的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70858363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com