Chase AdamsChase Adams
AboutContentPromptsPlayground

Fix CSS variable keys in style attributes in React and Typescript

Essays and updates on product, engineering, and AI by Chase Adams.

1 minute read

Josh Comeau has a wonderful article about using CSS variables in style attributes in React props that has changed the way I write CSS in React (link).

Unfortunately, when using TypeScript, this method leads to a build error.

The Error

TS2326: Types of property 'style' are incompatible.
Type '{ "--color": string; }' is not assignable to type 'CSSProperties'.
Object literal may only specify known properties, and '"--color"' does not exist in type 'CSSProperties'.

How to Fix it

There are two ways to fix the build error:

  • cast the style object to React.CSSProperties
  • create an interface that extends React.CSSProperties

Cast the style object to React.CSSProperties

The part to note here is that the style object is followed by as React.CSSProperties:

 <StyledComponent style={{ "--color": colorValue } as React.CSSProperties}>
 {/* details... */}
 </StyledComponent>

The downside of casting is that it will allow any key arbitrarily. If you want to be explicit about what keys are available, try the next method, Extending CSSProperties.

Create an interface that extends React.CSSProperties

Extending CSSProperties has the advantage of allowing you to say which keys are acceptable:

import React, { CSSProperties } from 'react';

export interface CSSPropertiesWithVars extends CSSProperties {
  '--color': string;
  // any other vars you may use
}
First Cohort
No Coding Experience Required

Build Your Website with AI—No Code Required

Learn to create and deploy professional websites using ChatGPT and Claude. Go from complete beginner to confident website builder.

Start Building Today

Post Details

Published
Feb 22, 2021
Category
Engineering
Share
Ask ChatGPT
Ask Claude

Latest Posts

Joining Rocket Money as VP of AI Engineering

Joining Rocket Money as VP of AI Engineering

Leading AI engineering at Rocket Money to write the playbook for how engineering teams operate in the AI era

AboutAI Workflow SpecContentStacksNewsletterPromptsRSS

Ask me anything

Loading...

Hi! Ask me anything about Chase's work.

I can answer questions based on his blog posts and articles.

Experimental: This chat is a side project I work on in my free time. Responses may vary in quality and accuracy.