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

Ant Design Table onChange中selectedRowKeys为何不是数字数组?

问题原因及解决方法

核心原因

Ant Design Table组件的rowSelection配置里,onChange方法的第一个参数selectedRowKeys的类型被定义为Key[],而Key是TypeScript内置的联合类型:string | number | symbol。

你实际打印出数字数组,是因为表格的rowKey用了数字类型的字段,但TypeScript的类型检查是基于类型定义而非运行时实际值的——它会严格遵循组件的类型声明,认为selectedRowKeys可能包含string或symbol类型的值,所以不允许你把参数类型直接写死为number[],这就导致了类型不兼容的报错。

常用解决方式

  • 方式一:兼容宽泛类型,内部转换
    先把参数类型设为Key[],在函数内部通过类型断言转换成number[](因为你确定实际运行时是数字):
    const rowSelection = {
      onChange: (selectedRowKeys: Key[], selectedRows: Mission[]) => {
        const numSelectedKeys = selectedRowKeys as number[];
        console.log(numSelectedKeys);
      }
    }
    
  • 方式二:通过泛型约束Key类型
    给TableRowSelection指定泛型参数,明确Key的类型为number:
    import { TableRowSelection } from 'antd/es/table/interface';
    
    const rowSelection: TableRowSelection<Mission, number> = {
      onChange: (selectedRowKeys: number[], selectedRows: Mission[]) => {
        console.log(selectedRowKeys);
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:27:10