错误 TS2322:“DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>”类型上不存在属性“cs
Posted
技术标签:
【中文标题】错误 TS2322:“DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>”类型上不存在属性“css”【英文标题】:error TS2322: Property 'css' does not exist on type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>' 【发布时间】:2022-01-04 16:42:46 【问题描述】:我最近决定将我的代码库从 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
属性类型的正确方向?
【问题讨论】:
您要查找的属性是style
而不是css
【参考方案1】:
为什么不直接在 'style.d.ts' 文件中添加这一行?
import from 'styled-components/cssprop'
【讨论】:
【参考方案2】:感谢@jkaczmarkiewicz!这很好用。将其更新为:
import CSSProp from "styled-components";
interface DefaultTheme
declare module "react"
interface HTMLAttributes<T> extends DOMAttributes<T>
css?: CSSProp<DefaultTheme>;
除了您提供的链接之外,此issue 也可能对其他人有所帮助。
【讨论】:
【参考方案3】:用下面的代码创建styledComponentsOverride.d.ts
:
import CSSProp from 'styled-components'
interface MyTheme
declare module 'react'
interface Attributes
css?: CSSProp<MyTheme>
这将使用可选的 CSS 属性扩展 react 元素属性类型
更多信息:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31245
【讨论】:
以上是关于错误 TS2322:“DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>”类型上不存在属性“cs的主要内容,如果未能解决你的问题,请参考以下文章
错误 TS2322:“DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>”类型上不存在属性“cs
如何在chartjs数据集中为Object []使用x值中的日期,我收到一个错误:'TS2322:类型'字符串'不可分配给类型'数字'。
打字稿 - 类型'值:数字;日期:日期; ' 不可分配给类型 'Record[]'。 ts(2322)