我最近决定把我的代码库从JS移到TS来添加类型检查。我还使用styled-components
库。
但是,我遇到了以下问题:
error TS2322: Type '{ children: string; css: string; }' is not assignable to type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.
Property 'css' does not exist on type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.
下面是一个基本的代码示例:
import React from 'react'
const MyComponent: React.FC = (props) => {
return (
<div css={`
padding: 44px;
`}>
My content
</div>
)
}
请注意,我的tsconfig.json
compilerOptions
看起来像这样:
"compilerOptions": {
"composite": true,
"declaration": true,
"outDir": "./dist", // https://www.typescriptlang.org/tsconfig#outFile
"rootDir": "./src",
"jsx":"react",
"types": ["@types/styled-components"],
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"declarationMap": true,
"noEmitOnError": true,
"skipLibCheck": true,
"esModuleInterop": true,
"noUnusedLocals":true,
"noUnusedParameters":true,
"allowJs":true,
"noEmit": false
}
谁能告诉我正确的方向来解决css
属性的类型?
5条答案
按热度按时间lrl1mhuk1#
使用以下代码创建
styledComponentsOverride.d.ts
:这将使用可选的CSS属性扩展react元素属性类型
更多信息:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31245
xkftehaa2#
为什么不将这一行添加到'style.d.ts'文件中呢?
kgsdhlau3#
谢谢@jkaczmarkiewicz!这很好用。更新到:
除了您提供的链接,此issue也可能帮助其他人。
gab6jxml4#
我用了一种类似的方法,但略有不同。我在src/theme文件夹中添加了一个样式化的.d.ts文件。如果你不使用主题,你也可以直接把它放在src文件中。
然后我在这个文件中添加了以下代码:
来源
pzfprimi5#
如果有人在使用emotion时遇到此问题,请参阅等效的类型声明模块: