pro-components
pro-components copied to clipboard
🧐[问题]自定义了valueType,怎么修改ts定义,才能不报错
提问前先看看:
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的定义中还是会遇到麻烦,它不是我自定义的类型定义
🚑 其他信息
在原有的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
}
}
}
ProFieldValueTypeWithFieldProps是type,怎么做声明合并呢