Type Challenges Judge

Tuple to Enum Object

提出詳細

type IndexOf<T extends readonly unknown[], V, Idx extends never[] = []> = Idx["length"] extends T["length"] ? -1 : V extends T[Idx["length"]] ? Idx["length"] : IndexOf<T, V, [...Idx, never]> type Enum<T extends readonly string[], N extends boolean = false> = { readonly [P in T[number]as Capitalize<P>]: N extends true ? IndexOf<T, P> : P }
提出日時2024-09-12 08:03:53
問題Tuple to Enum Object
ユーザーookkoouu
ステータスAccepted
テストケース
import type { Equal, Expect } from '@type-challenges/utils' const OperatingSystem = ['macOS', 'Windows', 'Linux'] as const const Command = ['echo', 'grep', 'sed', 'awk', 'cut', 'uniq', 'head', 'tail', 'xargs', 'shift'] as const type cases = [ Expect<Equal<Enum<[]>, {}>>, Expect<Equal< Enum<typeof OperatingSystem>, { readonly MacOS: 'macOS' readonly Windows: 'Windows' readonly Linux: 'Linux' } >>, Expect<Equal< Enum<typeof OperatingSystem, true>, { readonly MacOS: 0 readonly Windows: 1 readonly Linux: 2 } >>, Expect<Equal< Enum<typeof Command>, { readonly Echo: 'echo' readonly Grep: 'grep' readonly Sed: 'sed' readonly Awk: 'awk' readonly Cut: 'cut' readonly Uniq: 'uniq' readonly Head: 'head' readonly Tail: 'tail' readonly Xargs: 'xargs' readonly Shift: 'shift' } >>, Expect<Equal< Enum<typeof Command, true>, { readonly Echo: 0 readonly Grep: 1 readonly Sed: 2 readonly Awk: 3 readonly Cut: 4 readonly Uniq: 5 readonly Head: 6 readonly Tail: 7 readonly Xargs: 8 readonly Shift: 9 } >>, ]