属性 在类型 'IntrinsicAttributes & { children?: ReactNode; }' 上不存在
Property does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'
我有 Create-React-App
创建的 React 项目有以下包(提及与我的问题相关的包):
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1",
"typescript": "^3.9.2",
"@typescript-eslint/eslint-plugin": "^2.33.0",
"@typescript-eslint/parser": "^2.33.0"
我已经创建了一个简单的 HOC(目前什么都不做,但我稍后会添加我的逻辑),如下所示:
type Props = {
[key: string]: any;
};
const connect = function (Component: FunctionComponent): FunctionComponent {
const ComponentWrapper = function (props: Props): ReactElement {
return <Component {...props} />;
};
return ComponentWrapper;
};
并像这样导出我的组件:
const Test: FunctionComponent<Props> = function ({ message }: Props) {
return (
<div>{message}</div>
);
};
export default connect(Test);
并像这样使用这个组件:
<Test message="Testing message" />
但是在编译器中出现错误:
Type '{ message: string; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; }'.
Property 'message' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'. TS2322
我已经尝试了人们在 Google 上发现的其他类似 Stack Overflow 问题和文章中提出的建议,但目前还没有任何效果。
// This is the piece we were missing --------------------v
const connect = function (Component: React.FC): React.FC<Props> {
const ComponentWrapper = function (props: Props): JSX.Element {
return <Component {...props} />;
};
return ComponentWrapper;
};
重新启动编译器后它会正常工作。
connect
函数的return值的类型是需要Props
的函数组件,不是裸函数组件。
另见 cheatsheet
我有 Create-React-App
创建的 React 项目有以下包(提及与我的问题相关的包):
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1",
"typescript": "^3.9.2",
"@typescript-eslint/eslint-plugin": "^2.33.0",
"@typescript-eslint/parser": "^2.33.0"
我已经创建了一个简单的 HOC(目前什么都不做,但我稍后会添加我的逻辑),如下所示:
type Props = {
[key: string]: any;
};
const connect = function (Component: FunctionComponent): FunctionComponent {
const ComponentWrapper = function (props: Props): ReactElement {
return <Component {...props} />;
};
return ComponentWrapper;
};
并像这样导出我的组件:
const Test: FunctionComponent<Props> = function ({ message }: Props) {
return (
<div>{message}</div>
);
};
export default connect(Test);
并像这样使用这个组件:
<Test message="Testing message" />
但是在编译器中出现错误:
Type '{ message: string; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; }'.
Property 'message' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'. TS2322
我已经尝试了人们在 Google 上发现的其他类似 Stack Overflow 问题和文章中提出的建议,但目前还没有任何效果。
// This is the piece we were missing --------------------v
const connect = function (Component: React.FC): React.FC<Props> {
const ComponentWrapper = function (props: Props): JSX.Element {
return <Component {...props} />;
};
return ComponentWrapper;
};
重新启动编译器后它会正常工作。
connect
函数的return值的类型是需要Props
的函数组件,不是裸函数组件。
另见 cheatsheet