我有一个应用程序,它从后端接收支持的语言环境列表,作为以下响应:
{locales: [{code: 'enUS'}, {code: 'deDE'}, {code: 'arAR'}]}
我想使用date-fn库来处理日期格式,但我必须导入整个date-fn/locale,因为我事先不知道需要哪个locale:
import * as dateFnsLocales from 'date-fns/locale';
问题是,一些区域设置采用不同的代码格式(例如,当后端响应包含以下代码时,启用了对多伊奇的支持:'deDE',但对应的date-fns包只是'de'。另一方面,英语的date-fns包是“enUS”,而不仅仅是“en”。
简单的解决方案imho将处理它与一些合并运营商。示例如下:
import * as dateFnsLocales from 'date-fns/locale';
const supportedLocales = {locales: [{code: 'enUS'}, {code: 'deDE'}, {code: 'plPL'}]}
const newArrayWithSupportedLocales = supportedLocales.locales.map((locale) => ({
...locale,
dateFnsLocale: (dateFnsLocales[locale.code] || dateFnsLocales[locale.code.substring(0,2)]),
}));
我得到了一个typescript错误:No index signature with a parameter of type 'string' was found on type 'typeof import("date-fns/locale")'. TS7053
即使我像这样硬编码尝试:
dateFnsLocale: dateFnsLocales['plPL'.substring(0,2)]
它会失败,并出现相同的错误,即使这样:
dateFnsLocale: dateFnsLocales['pl']
工作正常。
1条答案
按热度按时间sirbozc51#
下面是我使用Expo的
Localization
对象进行动态查找的代码。这是测试