Reputation: 633
It seems that my type is working as expected. Then can please someone help me to explain the error I get in its definition and how to fix it? I can not find a solution.
export enum Languages {
Cs = 'cs',
Sk = 'sk',
En = 'en'
}
export type RouteDefinitionItem<T> = {
name: string;
pathname: { [index in T]: string };
page: string;
};
const routes: RouteDefinitionItem<Languages>[] = [
{
name: 'home',
pathname: {
cs: '/',
en: '/en',
sk: '/sk'
},
page: '/home'
}
];
error:
Type 'T' is not assignable to type 'string | number | symbol'.
Type 'T' is not assignable to type 'symbol'.
Link to TypeScript playground.
Thank you in advance.
Upvotes: 1
Views: 780
Reputation: 1342
export enum Languages {
Cs = 'cs',
Sk = 'sk',
En = 'en'
}
export type RouteDefinitionItem<T extends keyof any > = {
name: string;
pathname: Record<T,string>;
page: string;
};
const routes: RouteDefinitionItem<Languages>[] = [
{
name: 'home',
pathname: {
'cs':'',
'en':'',
'sk':''
},
page: '/home'
}
];
UPDATED.
Upvotes: 1