DEV Community

Discussion on: Nextjs + typescript +styled-components

Collapse
 
simonolsen profile image
Simon Olsen

Fantastic walkthrough! Your GlobalStyle setup is much better than the <style jsx global> you get OOTB with Next.js.

I was hoping for a bit more TypeScript config. I'm trying to apply some types to my styled-components. I followed the API reference for Typescript on the styled-components website but I couldn't get it working with my Next.js site. When I tried to apply some props from a DefaultTheme, example

color: ${props => props.theme.colors.main};
Enter fullscreen mode Exit fullscreen mode

I kept getting...

TypeError: Cannot read property 'main' of undefined
Enter fullscreen mode Exit fullscreen mode

I checked your example but there is no TypeScript checking in there.

Have you had any success with adding types to styled-components?

Collapse
 
rffaguiar profile image
Renan Aguiar

Hi Simon! I'm glad you liked it!
Sorry about the really long delay. I didn't receive a notification.

Did you solve the problem? I never tried to use types on my styles because they have a very dynamic nature, each one is so different from the other that I find counterproductive to create types for them.

About your error: you're trying to get a property main from another one that doesn't exist in the context, which is colors. Have you imported and set the colors property?

Collapse
 
keyes343 profile image
keyes343

Include a module file for themes, for styled components, at the root of your project. I found this solution on stackoverflow somewhere recently.