最佳答案
在我的应用程序中出现了以下错误(npm 5.4.2,response 15.4,type escript 2.5.3,webpack 2.2.1,webpack-dev-server 2.4.1)。
这将奏效:
<div style={{position: 'absolute'}}>working</div>
这将无法编译:
const mystyle = {
position: 'absolute'
}
<div style={mystyle}>not working</div>
编译错误是:
ERROR in ./src/components/Resource.tsx
(61,18): error TS2322: Type '{ style: { position: string; }; children: string; }' is not assignable to type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.
Type '{ style: { position: string; }; children: string; }' is not assignable to type 'HTMLAttributes<HTMLDivElement>'.
Types of property 'style' are incompatible.
Type '{ position: string; }' is not assignable to type 'CSSProperties'.
Types of property 'position' are incompatible.
Type 'string' is not assignable to type '"inherit" | "initial" | "unset" | "fixed" | "absolute" | "static" | "relative" | "sticky"'.
webpack: Failed to compile.
但是有什么区别呢? 我可以用:
const mystyle = {
position: 'absolute' as 'absolute'
}
但这是个好办法吗?
我对其他 style/css 属性没有这个问题。
我在 github 上发现了一个类似的问题: Https://github.com/microsoft/typescript/issues/11465 但如果理解正确的话,这是早期版本中的一个打印错误。
感谢你的帮助。