تایپاسکریپت - @types - آرایهای از مقادیر به کلیدهای شی


فرض کنیم یک فهرست از رشتهها دارم

const arr = ["a", "b", "c"];

دقیقاً چگونه میتوانم آن را به یک شیء تبدیل کنم به طوری که این مقادیر کلیدی برای هر شیء باشند؟

const obj = {
 a: "can be anything",
 b: 2,
 c: 0
}

من سعی کردهام استفاده کنم

type TupleToObject<T extends readonly string[]> = {
    [P in T[number]]: any;
};

اما به نظر نمیرسد که نوع آن قوی باشد.

پاسخ شماره ۱

شما میتوانید از سینتکس as const در تایپاسکریپت استفاده کنید (رجوع کنید به مستندات).

const arr = ["a", "b", "c"] as const;
// inferred type: readonly ["a", "b", "c"]


type TupleToObject<T extends readonly string[]> = {
    [P in T[number]]: any;
};

type MyObject = TupleToObject<typeof arr>
// type MyObject = {
//     a: any;
//     b: any;
//     c: any;
// }