تایپاسکریپت - استخراج یک نوع از آرایه رشتهای ثابت


میدانم که در تایپاسکریپت میتوان این کار را انجام داد:

const someOptions = {
  a: "",
  b: "",
  c: ""
} as const 


type SomeType = keyof typeof someOptions

من میخواهم کاری بسیار مشابه انجام دهم، اما سپس از یک آرایه به عنوان ورودی استفاده کنم.

const someOptions = ["a", "b", "c"] as const;
type SomeType = ...

آیا این ممکن است؟

یک آرایه راحت است زیرا میتوانم آن را مستقیماً به چیزی مثل Joi.string().valid() پاس دهم. همچنین، من مقادیر معقولی برای تعریف این موارد در یک شیء کلید/مقدار ندارم، بنابراین استفاده از یک شیء به عنوان نقطه شروع احمقانه به نظر میرسد.

پاسخ شماره ۱

میتوانید به [number] در آرایه typeof someOptions دسترسی پیدا کنید تا به مقادیر به صورت نوع اتحادیه برسید:

const someOptions = ["a", "b", "c"] as const;
type SomeType = typeof someOptions[number]
// SomeType is:
// "a" | "b" | "c"