Как получить доступ к свойствам универсального объекта по индексу в TypeScript? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть следующая функция, которая просматривает все атрибуты объекта и преобразует их из строк ISO в даты:

function findAndConvertDates<T>(objectWithStringDates: T): T {

    for (let key in Object.keys(objectWithStringDates)) {

        if (ISO_REGEX.test(objectWithStringDates[key])) {
            objectWithStringDates[key] = new Date(objectWithStringDates[key]);

        } else if (typeof objectWithStringDates[key] === 'object') {
            objectWithStringDates[key] = findAndConvertDates(
                objectWithStringDates[key]
            );
        }
    }
    return objectWithStringDates;
}

TypeScript постоянно говорит мне, что Element implicitly has an 'any' type because type '{}' has no index signature - ссылаясь на многочисленные случаи objectWithStringDates[key].

Учитывая, что объект передается как общий объект, как бы я начал обращаться к этим свойствам без явной подписи индекса?

(в противном случае, как предоставить подпись индекса или устранить эту ошибку?)

Спасибо!

1 Ответ

0 голосов
/ 08 сентября 2018

Вы можете сделать индексируемую подпись так:

function findAndConvertDates<T extends { [key: string]: any }>(objectWithStringDates: T): T {

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