私はこのようにjsxを定義したいです:
<table style={{'--length': array.lenght}}>
<tbody>
<tr>{array}</tr>
</tbody>
</table>
また、cssで--lengthを使用していますが、css疑似セレクターを使用して(counter hackを使用して)カウントを示す--countを持つセルもあります。
typeScriptはエラーを表示します:
TS2326: Types of property 'style' are incompatible.
Type '{ '--length': number; }' is not assignable to type 'CSSProperties'.
Object literal may only specify known properties, and ''--length'' does not exist in type 'CSSProperties'.
css変数(カスタムプロパティ)を受け入れるようにスタイル属性のタイプを変更することは可能ですか、またはスタイルオブジェクトに強制する方法はありますか?
CSSProperties
の定義に移動すると、次のように表示されます。
export interface CSSProperties extends CSS.Properties<string | number> {
/**
* The index signature was removed to enable closed typing for style
* using CSSType. You're able to use type assertion or module augmentation
* to add properties or an index signature of your own.
*
* For examples and more information, visit:
* https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors
*/
}
そのリンクは、Properties
内のcsstype
の定義を拡張するか、プロパティ名をany
にキャストすることにより、型エラーを解決する方法の例を示しています。
このような:
render(){
var style = { "--my-css-var": 10 } as React.CSSProperties;
return <div style={style}>...</div>
}
型アサーションを変数に追加できます。 つまり{['--css-variable' as any]: value }
<table style={{['--length' as any]: array.lenght}}>
<tbody>
<tr>{array}</tr>
</tbody>
</table>