我正在按照文档中的示例创建媒体模板,并且我真的很努力地键入要传递给css函数的参数(示例中的纯JS版本):
const sizes = {
desktop: 992
}
const media = Object.keys(sizes).reduce((acc, label) => {
acc[label] = (...args) => css` // <----- how to type args
@media(max-width: ${sizes[label]}px) {
${css(...args)}
}
`
return acc
}, {})
Run Code Online (Sandbox Code Playgroud)
如果您知道TS但不了解样式组件,args则它是带标签的模板文字,因此我将这样使用该media对象:
media.desktop`
background-color: blue;
${variable}
`
Run Code Online (Sandbox Code Playgroud)
我尝试键入argsas,TemplateStringsArray但TS抱怨,因为扩展参数必须是array类型的(我认为是类型,但是某种程度上无法识别)。如果我将类型更改为TemplateStringsArray[],则该css()函数会抱怨,因为它期望至少1个参数,但收到0或更多。