我试图键入一个主题对象,将与Tailwind一起使用,我试图实现的是在主题签名中动态提供类型:
export interface Theme {
screens: {
[key: string]: string;
};
bps: keyof this['screens'][]; // breakpoints
};
我试图实现的是提供一个接口来配置主题,但编译器一直在抱怨。理想情况下,接口的实现如下所示:
// good example
const t: Theme = {
screens: {
sm: "200px",
md: "400px"
},
bps:["md"] // md exists in screens
}
// bad example
const tt: Theme = {
screens: {
sm: "200px",
md: "400px"
},
bps:["foo"] // foo is not a key of screens
}
1条答案
按热度按时间gcuhipw91#
据我所知,唯一的方法是使
Theme
通用,这样我们就可以推断出键的类型,并且为了避免显式指定该类型,我们必须在创建主题时使用一个不做任何事情的函数。它看起来像这样:
Playground链接