You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TypeScript传递Props报错TS2322:属性inputs类型不匹配

错误原因分析

你遇到的TS2322错误核心是组件Props类型定义与实际传递的Props结构不匹配:

  • 你给BasicForm组件指定的类型是React.FC<IFormInput[]>,这表示组件接收的Props本身就是一个IFormInput数组;
  • 但在App.tsx中,你是通过inputs={input}传递一个包含inputs属性的对象,TypeScript检测到两者结构不一致,因此报错。
解决方案

修改BasicForm组件的Props类型定义,让它匹配实际传递的结构:

步骤1:定义组件Props接口(或直接使用字面量类型)

在BasicForm组件文件中,先定义符合实际传递结构的Props类型:

// 方式一:单独定义接口
interface BasicFormProps {
  inputs: IFormInput[];
}

// 方式二:直接使用字面量类型(无需单独定义接口)
// React.FC<{ inputs: IFormInput[] }>

步骤2:修改组件的类型声明与参数

将组件的类型改为上述定义的Props类型,并通过解构获取inputs属性:

import { FormEvent } from "react";
import { IFormInput } from "../../utils/types/IFormInput";
import FormInput from "./elements/formInput";

// 使用方式一的接口
interface BasicFormProps {
  inputs: IFormInput[];
}

const BasicForm: React.FC<BasicFormProps> = ({ inputs }) => {
  function submitForm(event: FormEvent<HTMLFormElement>) {
    event.preventDefault();
  }

  return (
    <div className="basicForm">
      <form onSubmit={submitForm}>
        {inputs.map((input) => (
          <FormInput {...input} key={input.id}></FormInput>
        ))}
      </form>
    </div>
  );
};
export default BasicForm;

额外优化

注意到你在map渲染时没有加key属性,这会触发React的警告,建议加上key={input.id}(如上述代码所示)。

验证修改

修改完成后,App.tsx中的调用代码无需改动,TypeScript的错误会自动消失,组件能正常接收并渲染inputs数组。

内容的提问来源于stack exchange,提问作者lcsaloon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:40:31