pro-components icon indicating copy to clipboard operation
pro-components copied to clipboard

🧐[问题]自定义了valueType,怎么修改ts定义,才能不报错

Open ThiefTMBadBad opened this issue 1 year ago • 3 comments

提问前先看看:

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

🧐 问题描述

使用了umi和pro-components 我自定义了valueType,但是发现ts无法通过

💻 示例代码


const valueTypeMap: Record<string, ProRenderFieldPropsType> = {
  lookup: {
    renderFormItem(text, props) {
      return <ProFormLookup {...props} />
    }
  },
}

export default function Layout() {
  return (
    <ProConfigProvider valueTypeMap={valueTypeMap}>
      <Outlet />
    </ProConfigProvider>
  );
}

export const columns: ProColumns<ProductModelInfo>[] = [
  {
    title: '机型编码',
    dataIndex: 'no',
    width: 120,
    tooltip: '机型编码是唯一的 key',
    formItemProps: {
      rules: [{ required: true, whitespace: true }],
    },
    render(dom, entity, index, action, schema) {
      console.log(dom, entity, index, action, schema);
      return <Link to={`../product-model-detail?id=${entity.id}`}>{dom}</Link>;
    },
  },
  {
    title: '机型名称',
    dataIndex: 'name',
    valueType: 'lookup', // 这一行会报错
    width: 120,
    fieldProps: {
      allowClear: true,
    },
    formItemProps: {
      rules: [{ required: true, whitespace: true }],
    },
  },
];

我尝试过了给ProColumns的第二个泛型参数传递'lookup',但是我在fieldProps的定义中还是会遇到麻烦,它不是我自定义的类型定义

🚑 其他信息

ThiefTMBadBad avatar Apr 27 '24 18:04 ThiefTMBadBad

在原有的ProRenderFieldPropsType类型上,不存在valueType,

如果你需要扩展,可以在你的全局类型文件中, 如:typings.d.ts 或 global.d.ts 中,引用整个类型模块,再添加扩展,下面是一个taro和momentjs扩展的案例, 自行对照:

import "@tarojs/taro"
import "moment"

declare module "@tarojs/taro" {
    interface TaroStatic {
        initFaceDetect(options?: { success?: (res: TaroGeneral.CallbackResult) => void; fail?: (res: TaroGeneral.CallbackResult) => void; complete?: (res: TaroGeneral.CallbackResult) => void }): void
        faceDetect(options: IFaceDetectOptions): void
    }
}
declare module "moment" {
    interface Duration {
        _data: {
            days: number
            hours: number
            milliseconds: number
            minutes: number
            months: number
            seconds: number
            years: number
        }
    }
}

Lukunlin avatar May 28 '24 11:05 Lukunlin

ProFieldValueTypeWithFieldProps是type,怎么做声明合并呢

roddc avatar Aug 14 '24 11:08 roddc