V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
particlec
V2EX  ›  问与答

遇到一个 TypeScript 的问题,请大佬指点

  •  
  •   particlec · 2022-09-01 16:47:23 +08:00 · 742 次点击
    这是一个创建于 848 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ---- 我在 ts 中,使用 antd Table 的 onChange 方法

    //我把它的参数都取出来了,实际上我只想用到 sorter 参数
    onChange={(
    pagination: TablePaginationConfig,
    filters: Record<string, FilterValue | null>,
    sorter: SorterResult<DatabaseType> | SorterResult<DatabaseType>[],
    extra: TableCurrentDataSource<DatabaseType>
    ) => {
    handleTableChange(sorter);
    }}


    // 分页、过滤、排序改变时触发,我使用 sorter 发现 sorter?.field 、sorter?.order 都会类型报错
    function handleTableChange(
    sorter: SorterResult<DatabaseType> | SorterResult<DatabaseType>[]
    ) {
    if (
    sorter?.field &&
    sorter?.order &&
    (sorter.field !== params.sortField || sorter.order !== params.sortOrder)
    ) {
    const sortField = sorter.field as string;
    const sortOrder = sorter.order as string;

    setParams((params: any) => ({
    ...params,
    sortField: sortField,
    sortOrder: sortOrder,
    page: 1,
    }));
    }
    }
    liuw666
        1
    liuw666  
       2022-09-01 16:50:39 +08:00
    我是重新定义了一个 sorter 的类型,antd 默认的太复杂。没有必要。 其实就两个字段而已
    interface TableSorter {
    field?: string;
    order?: string;
    }
    particlec
        2
    particlec  
    OP
       2022-09-01 16:54:47 +08:00
    //但是我重新定义完后 onChange ,会报红

    onChange={(
    pagination: TablePaginationConfig,
    filters: Record<string, FilterValue | null>,
    sorter: TableSorter,
    extra: TableCurrentDataSource<DatabaseType>
    ) => {
    handleTableChange(sorter);
    }}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4377 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.