gpt4 book ai didi

typescript - 如何使用Typescript创建常量数组的索引的联合类型?

转载 作者:行者123 更新时间:2023-12-04 12:22:34 25 4
gpt4 key购买 nike

我有一个字符串的常量数组,例如

const emojis = ['😄', '😊', '😐', '😕', '😣'] as const
我想要一个包含该数组索引联合的类型,例如
type emojiIndexes = IndexesOfArray<typeof emojis> // => 0 | 1 | 2 | 3 | 4
所以我不允许使用 number并仅使用数组中索引的确切数量
如果数组大小,例如
// changed from this
// const emojis = ['😄', '😊', '😐', '😕', '😣'] as const
// to this
const emojis = ['😄', '😊', '😐'] as const // removed 2 emojis
比, IndexesOfArray<typeof emojis>将是 0 | 1 | 2我如何创建 IndexesOfArray这将创建一个带有常量数组索引的联合类型?

最佳答案

这是一个解决方案:

type TupleIndices<A extends any[]>
= A extends [any, ...infer T]
? TupleIndices<T> | T['length']
: never
例子:
type Foo = ['foo', 'bar', 'baz', 'qux', 'quz']

// 0 | 4 | 3 | 2 | 1
type FooIndices = TupleIndices<Foo>
Playground Link

关于typescript - 如何使用Typescript创建常量数组的索引的联合类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66786088/

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