Тип ‘string’ не имеет общих свойств с типом ‘CSSProperties’

#reactjs #typescript #next.js

#reactjs #typescript #next.js

Вопрос:

Как исправить Type 'string' has no properties in common with type 'CSSProperties'

     const points = 100;
        const radius = 257;
        const max = 100;
        const peaks = [ 10, 50, 90 ];
        const step = (max   1) / points;
        const realPeaks = peaks.map((peak) => Math.floor(peak * (1 / step)));
        const hueStep = 120 / points;
    const digit = props.item.temperature;
    const outerContainer = [];
    for (let i = 0; i < points; i  ) {
    const intStep = Math.ceil(step * i);
            const intNextStep = Math.ceil(step * (i   1));
    
            let styles = `transitionDelay: ${(i / digit * (i / digit)   1)}  's'`;
    
            if (intStep <= digit) {
                styles  = `backgroundColor: hsl(${240   i * hueStep} , 92%, 64%)`;
            }

***ADDEDD***
if (intStep > digit || (intStep <= digit amp;amp; intNextStep <= digit)) {
            styles  = `
        -webkit-transform: rotate(${degree}deg);
        -moz-transform: rotate(${degree}deg);
        -ms-transform: rotate(${degree}deg);
        -o-transform: rotate(${degree}deg);
        transform: rotate(${degree}deg);`;
        }
    outerContainer.push(<i className="bar" style={styles} />);
        }
 

То, что я пытаюсь здесь сделать, — это добавить backgroundColor if intStep <= digit . но styles={styles}```` have an error which is the тип ‘string’ не имеет общих свойств с типом ‘CSSProperties»`. Как на этом зациклиться.

Я добавил код для преобразования

Ответ №1:

Вам нужен объект вместо строки для styles переменной:

 const styles: React.CSSProperties = {
    transitionDelay: `${(i / digit * (i / digit)   1)}  's'`
};
if (intStep <= digit) {
    styles.backgroundColor = `hsl(${240   i * hueStep} , 92%, 64%)`;
}
 

Комментарии:

1. Property 'backgroundColor' does not exist on type '{ transitionDelay: string; }' или я должен использовать стили [‘backgroundColor’]?

2. Как насчет того, когда я добавляю это -webkit-transform: rotate(${degree}deg); -moz-transform: rotate(${degree}deg); -ms-transform: rotate(${degree}deg); -o-transform: rotate(${degree}deg); transform: rotate(${degree}deg);`;

3. Используйте обозначение в скобках, например styles['-webkit-transform'] = `rotate(${degree}deg)`; , или определите его встроенным в объект