Как безопасно пройти ключ объекта и распечатать все значение по ключу в машинописи? - PullRequest
0 голосов
/ 23 января 2020

Я изучаю машинопись и пытаюсь определить функцию для обхода значения объекта, но когда я так поступаю, tslint говорит мне:

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{}'. No index signature with a parameter of type 'string' was found on type '{}'.ts(7053)

Вот мой код:

function proxyData(data: object) {
  Object.keys(data).forEach((key: string) => {
    console.log(data[key]);
  });
}

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Определите объект, как, скажем,

let myDictionary: { [index: string]: any; } = {};
for (let key in myDictionary) 
{
  let value = myDictionary[key];
  // Use `key` and `value` 
}

В TS вам нужно определить тип объекта, даже если вы не знаете точный тип, вы можете использовать выше структуру словаря

> = ES 2017: См. Здесь, чтобы настроить или использовать es7 и работать с машинописью

 Object.entries(myDictionary).forEach(
  ([key, value]) => console.log(key, value);
);
0 голосов
/ 23 января 2020

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

Например,

interface MyData {
  key1: string;
  key2: boolean;
}

function proxyData(data: MyData) {
  Object.keys(data).forEach((key: string) => {
    console.log(data[key]);
  });
}

Если вы не хотите указывать ключи, вы можете дать общую структуру индекса

interface myData {
  [key: string]: string;
}

В противном случае используйте any вместо object.

Поскольку вы пытаетесь получить ключи и значения, подумайте об использовании Object.entries.

function proxyData(data: myData) {
  for (let [key, value] of Object.entries(data)) {
    console.log(key + ':' + value);
  }
}

...