@Pavel_Dorozhkin

Как исправить ошибку?

Здравствуйте, только начинаю изучать TypeScript, подскажите что не нравится компилятору?))
Пишет следущее: Элемент неявно имеет тип "any", так как выражение типа "string" не может использоваться для индексации типа "IRoutesMap".
В типе "IRoutesMap" не обнаружена сигнатура индекса с параметром типа "string".

import { Settings } from "../pages/Settings";
import { KbApp } from "../pages/KbApp";
import { About } from "../pages/About";
import { NotFound404 } from "../pages/NotFound404";

interface IRoutes {
	name?: string;
	path: string
	component: () => JSX.Element,
	exact?: boolean
}

const routes: IRoutes[] = [
	{
		name: 'settings',
		path: '/',
		component: Settings
	},
	{
		name: 'kbApp',
		path: '/kb-app',
		component: KbApp
	},
	{
		name: 'about',
		path: '/about',
		component: About
	},
	{
		path: '**',
		component: NotFound404,
		exact: false
	}
];

interface IRoutesMap {
	name: string;
}

const routesMap = {} as IRoutesMap;

routes.forEach(route => {
	if('name' in route && route.name !== undefined){
		routesMap[route.name] = route.path;  // тут выдает ошибку
	}
});

export { routes, routesMap };
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
MagnusDidNotBetray
@MagnusDidNotBetray
Самый елеустремленный человек
Наверно, стоит начать изучать тайпскрипт с документации
interface IRoutesMap {
  [index: string]: string;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
E1ON
@E1ON
web, gamedev, anime, science
Потому что у IRoutesMap есть только свойство name, а вы пытаетесь впарить ему другие свойства
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы