【发布时间】:2020-10-20 11:43:18
【问题描述】:
看来我的类型按预期工作。那么请有人帮我解释我在定义中遇到的错误以及如何解决它?我找不到解决办法。
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'
}
];
错误:
Type 'T' is not assignable to type 'string | number | symbol'.
Type 'T' is not assignable to type 'symbol'.
Link to TypeScript playground.
提前谢谢你。
【问题讨论】:
-
您不能将任何
T用于RouteDefinitionItem,因为只有string | number | symbol可以是属性。所以限制它 -T extends string | number | symbol. -
哦,我明白了。感谢@jonrsharpe,现在它可以工作了。
标签: typescript typescript-typings typescript-generics