ошибка отображения массива в строку с Object.keys (JavaScript) - PullRequest
0 голосов
/ 02 мая 2018

У меня есть объект типа c.errors, который возвращает в конкретном случае:

{обязательно: верно}

И я хочу сопоставить это с более общим (и фиксированным массивом)

   validationMessages = {
    required: 'Please enter',
    pattern: 'Please enter valid'
  }

У меня также есть свойство errorMessage, инициализированное пустой строкой , Моя попытка была:

 this.errorMessage = Object.keys((c.errors).map(key => this.validationMessages[key]).join(' '));

Ошибки, которые я получаю:

Параметр «ключ» неявно имеет тип «любой».

Элемент неявно имеет тип 'any', потому что type '{required: строка; шаблон: строка; } 'не имеет индексной подписи.

Любой совет?

this.errorMessage должно содержать «Пожалуйста, введите» (это мое ожидание после сопоставления)

1 Ответ

0 голосов
/ 02 мая 2018

Если вы индексируете тип, у которого нет индексатора, то для машинскрипта ожидается, что строка, которую вы индексируете, будет ключом типа. Это означает, что в вашем случае key должен быть либо строковым литералом типа 'required', либо 'pattern'. Поскольку Object.keys возвращает массив strings, если вы уверены, что массив будет содержать только действительные ключи для validationMessages, вы можете просто использовать утверждение типа. Также у вас есть несколько несоответствующих скобок:

this.errorMessage = Object.keys(c.errors).map((key) => this.validationMessages[key as 'required']).join(' '); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...