#javascript #nestjs
#javascript #nestjs
Вопрос:
У меня есть класс с внедрением службы i18n. Я хочу использовать его в новой карте. Теперь ^ У меня ошибка «Перегрузка не соответствует этому вызову».
public async getContent() {
const a = new Map([
[
'AA',
new Map([
'desc',
[
await this.i18n.t('Hello')
]
]
])
]
]);
PS:
Работает, когда вторая карта возвращает только одну пару
const a = new Map([
[
'AA',
new Map([
['desc', [await this.i18n.t('Hello'), await this.i18n.t('Hello')]],
])
]
]);
Но ^ когда я добавляю новую пару, это не работает
new Map([
['111', 222]
['desc', [await this.i18n.t('Hello'), await this.i18n.t('Hello')]],
])
Комментарии:
1. Почему бы не дождаться результата раньше и не установить для него значение Map после выполнения? Я не уверен, что карту можно использовать таким образом.
2. У меня большой массив карт.
Ответ №1:
На самом деле это должно быть возможно, ваш синтаксис неверен (отсутствует [..]
). Рассмотрим этот простой пример:
function fakeI18n(someStr) {
return new Promise((resolve => {
setTimeout(() => {
resolve('translatedString')
}, 200);
}))
}
(async () => {
const result = new Map([
[
'AA',
new Map([
['111', 222],
[
'desc',
[await fakeI18n('hello'), await fakeI18n('hello')]
]])
]
]);
console.log(result)
})()
Это выведет:
Map(1) {
'AA' => Map(2) {
'111' => 222,
'desc' => [ 'translatedString', 'translatedString' ]
}
}
Комментарии:
1. спасибо, не видел
Map
, чтобы это использовалось таким образом, сегодня узнаю что-то новое 🙂2. Добавлен вопрос
3. Вам нужно указать каждую пару внутри
[...]
. Смотрите мое обновление.4. @VladimirGolub: есть отзывы?