جافاسكريبت - تحويل تعداد TypeScript إلى كائن محدد
لدي تعداد TypeScript التالي:
export declare enum SupportedLanguages {
en,
fr
}
إذا قمت باستيراده في تطبيق React الخاص بي وconsole.log له، سأحصل على الكائن التالي معاد:
{
en: "en",
fr: "fr"
}
كيف يمكنني التلاعب به، بحيث أحصل على الكائن التالي معاد؟
{
en: "",
fr: ""
}
لقد جربته باستخدام const Lang=Object.keys(SupportedLanguages) وأيضًا باستخدام .map() ولكن لم أحصل على الكائن المتوقع.
الإجابة رقم 1
يمكنك الحصول على المفاتيح، ومطابقتها مع زوج مرتب [key, '']، وإرجاعها مرة أخرى إلى كائن باستخدام Object.fromEntries():
const supportedLanguages = {
en: "en",
fr: "fr"
};
const result = Object.fromEntries(
Object.keys(supportedLanguages)
.map(k => [k, ''])
);
console.log(result);إذا تلقيت خطأً مثل هذا:
TS2550: الخاصية 'fromEntries' غير موجودة في نوع 'ObjectConstructor'. هل تحتاج إلى تغيير مكتبتك المستهدفة؟ جرب تغيير خيار المترجم
libإلى 'es2019' أو أحدث.
أضف es2019 إلى compilerOptions.lib في tsconfig.json لمشروعك:
{
"compilerOptions": {
"lib": [
"es2019"
]
}
}
الإجابة رقم 2
هل تبحث فقط عن الحصول على كائن جديد بجميع البيانات كسلاسل فارغة؟
var supportedLanguages = {
en: "en",
fr: "fr"
};
var result = Object.keys(supportedLanguages)
.reduce((accum, key) =>
Object.assign(accum, { [key]: "" })
, {});
console.log(result); // { "en": "", "fr": "" }
