小编Tho*_*hia的帖子

在样式化组件中键入css函数

我正在按照文档中的示例创建媒体模板,并且我真的很努力地键入要传递给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或更多。

typescript styled-components

0
推荐指数
2
解决办法
1086
查看次数

标签 统计

styled-components ×1

typescript ×1