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

Next.js中TypeScript报错:any类型无法赋值给never类型参数.ts(2345)

解决TypeScript错误:Argument of type 'any' is not assignable to parameter of type 'never'

问题根源

你的代码存在两个核心问题:

  1. 定义的PassengerData接口不完整,缺少实际使用的name、surName等属性,导致TypeScript无法正确推断类型;
  2. newpassengerdata和selectedList未显式指定类型,TypeScript自动推断为never[]或any[],引发类型不匹配错误。

分步解决方案

  1. 完善PassengerData接口
    补充所有业务中用到的属性,确保类型覆盖全面:

    interface PassengerData {
      id: number;
      name: string;
      surName: string;
      namePerfix: 1 | 0; // 对应性别判断的1/0值
      docId: string;
      nationalId: string;
      birthDate: string;
      expireDate: string;
    }
    
  2. 给newpassengerdata显式指定类型
    避免TypeScript自动推断错误类型,直接声明变量类型:

    // 假设passdata.data是PassengerData数组,若passdata是API返回值,建议同时给passdata定义类型
    let newpassengerdata: PassengerData[] | undefined = passdata?.data?.filter((i: PassengerData) => 
      i.name.includes(inputsearch) || i.surName.includes(inputsearch)
    );
    
  3. 指定selectedList的类型
    由于它存储的是乘客id(数字类型),初始化时明确类型:

    const [selectedList, setselectedList] = useState<number[]>([]);
    
  4. 简化filter和map的类型标注
    变量类型明确后,无需再给回调参数手动指定any或重复指定接口,TypeScript会自动推断:

    {newpassengerdata?.filter(i => selectedList.indexOf(i.id) < 0)
      ?.slice(pageVisited, pageVisited + postPerPage)
      ?.map((i, index) => {
        // 原JSX代码保持不变,i会自动推断为PassengerData类型
      })}
    
  5. 优化表单值的类型(可选)
    为values.passengers和values.airTraveler定义对应接口,彻底消除@ts-ignore注释:

    interface PassengerFormData {
      id: number;
      namePerfix: 1 | 0;
      nationalId: string;
      name: string;
      surName: string;
      birthDate: string;
      docId: string;
      expireDate: string;
    }
    
    // 使用useForm时指定类型
    const { values } = useForm<{
      airTraveler: PassengerFormData[];
      passengers: PassengerFormData[];
    }>();
    

效果验证

完成以上修改后,TypeScript可以正确推断所有变量的类型,never类型错误会自动消失,同时代码的类型安全性也会提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:53