Индекс подписи для итерации в машинописи - PullRequest
0 голосов
/ 23 октября 2019

Мы все видим, что этот код является допустимым javascript:

const myObj = {
  foo: "string",
  bar: 123,
  baz: "important stuff"
};

['foo', 'bar'].forEach((key) => {
  delete myObj[key];
});

Элемент неявно имеет тип 'any', потому что выражение типа 'string' нельзя использовать для индексации типа '{foo:строка;бар: номер;баз: строка;}». Нет подписи индекса с параметром типа 'строка' для типа '{foo: string;бар: номер;баз: строка;} '.

Итак, как лучше всего совместить этот TypeScript?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Попробуйте ввести свой массив:

const myObj = {
  foo: "string",
  bar: 123,
  baz: "important stuff"
};

const myArray: (keyof typeof myObj)[] = ['foo', 'bar']

myArray.forEach(...)
0 голосов
/ 23 октября 2019

Один обходной путь:

(['foo', 'bar'] as (keyof typeof myObj)[]).forEach((key) => {
  delete myObj[key];
});

Но это не предотвращает ошибки ввода в строках массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...