Typescript React 组件类型不匹配
Typescript React component type mismatch
在使用任意数量的 props 定义任何类型的简单 React 功能组件时出现打字稿错误,包括使用 FC、ComponentWithChildren 等...
这是一个最小的复制品
type Props = {
className?: string;
};
const Horizontal: Props = ({ className = undefined }) => (
<div />
);
报错
Type '({ className }: { className?: undefined; }) => Element' has no properties in common with type 'Props'.ts(2559)
我不明白我总是这样定义组件的。打字稿中有什么我不知道的新东西吗?
{
"name": "call-mvp",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^13.5.0",
"@types/classnames": "^2.3.1",
"@types/jest": "^27.5.1",
"@types/node": "^16.11.36",
"@types/react": "^18.0.9",
"@types/react-dom": "^18.0.4",
"@types/react-measure": "^2.0.8",
"@types/react-router-dom": "^5.3.3",
"@types/styled-components": "^5.1.25",
"classnames": "^2.3.1",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-measure": "^2.5.2",
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
"styled-components": "^5.3.5",
"typescript": "^4.6.4",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
这应该有效:
const Horizontal = ({ className = undefined } : Props) => ....
您可以将其更改为:
const Horizontal: FC = ({ className = undefined } : Props)
在使用任意数量的 props 定义任何类型的简单 React 功能组件时出现打字稿错误,包括使用 FC、ComponentWithChildren 等...
这是一个最小的复制品
type Props = {
className?: string;
};
const Horizontal: Props = ({ className = undefined }) => (
<div />
);
报错
Type '({ className }: { className?: undefined; }) => Element' has no properties in common with type 'Props'.ts(2559)
我不明白我总是这样定义组件的。打字稿中有什么我不知道的新东西吗?
{
"name": "call-mvp",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^13.5.0",
"@types/classnames": "^2.3.1",
"@types/jest": "^27.5.1",
"@types/node": "^16.11.36",
"@types/react": "^18.0.9",
"@types/react-dom": "^18.0.4",
"@types/react-measure": "^2.0.8",
"@types/react-router-dom": "^5.3.3",
"@types/styled-components": "^5.1.25",
"classnames": "^2.3.1",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-measure": "^2.5.2",
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
"styled-components": "^5.3.5",
"typescript": "^4.6.4",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
这应该有效:
const Horizontal = ({ className = undefined } : Props) => ....
您可以将其更改为:
const Horizontal: FC = ({ className = undefined } : Props)