Использование Object.keys и уменьшение ключей объекта - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь уменьшить Object.keys, например:

const example = { hello: true }
Object.keys(example).reduce((acq, key) => {
  const value = example[key]
  return acq
}, {})

По какой-то причине я получаю сообщение об ошибке типа под example[key]

(параметр) key: string

Элемент неявно имеет тип 'any', поскольку выражение типа 'string' не может использоваться для индексации типа '{hello: boolean; } '. Индексная подпись с параметром типа 'строка' для типа '{hello: boolean; } '. (7053)

Я создал свою собственную getKeys функцию с обобщенным c, который имеет типизацию, которую я ожидал:

function getKeys <T>(g: T) {
  return Object.keys(g) as (keyof T)[]
}

const example = { hello: true }
getKeys(example).reduce((acq, key) => {
  const value = example[key]
  return acq
}, {})

Однако я' м смотрю, можно ли такое без накрутки Object.keys.

1 Ответ

1 голос
/ 09 мая 2020

В этом случае вы можете указать для своей переменной example, как показано ниже, чтобы машинописный текст знал, что ключи имеют тип string.

const example = { hello: true } as { [key: string]: any }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...