UNPKG

@alicloud/console-components

Version:

Alibaba Cloud React Components

57 lines (55 loc) 1.96 kB
import { EIssueType, EIssueConsequence } from '../../enum'; import { IFixing } from '../../types'; export const FIXING_PROP_GENERIC: IFixing = { propName: '泛型', codeOld: `interface SelectProps { dataSource?: Array<any>; value?: any; defaultValue?: any; onChange?: (value: any, actionType: string, item: any) => void; }`, codeNew: `// 单选 interface SelectProps<T, D extends IDataSourceItemBase<T>> { mode?: 'single'; // 不设或显式说是 single 的时候,为单选 dataSource: D[] | T[]; // 可以是纯值,也可以是 DataSourceItem value?: T; defaultValue?: T; onChange?(value: T, source: TSelectChangeSource, item: TDataSourceMixed<T, D>): void; } // 多选 interface SelectProps<T, D extends IDataSourceItemBase<T>> { mode: 'multiple' | 'tag'; // 当设置这两个值的时候,为多选,下方相关的参数都是数组 dataSource: D[] | T[]; // 可以是纯值,也可以是 DataSourceItem value?: T[]; defaultValue?: T[]; onChange?(value: T[], source: TSelectChangeSource, item: TDataSourceMixed<T, D>[]): void; } export type TSelectProps<T = string, D extends IDataSourceItemBase<T> = IDataSourceItemBase<T>> = ISelectPropsSingle<T, D> | ISelectPropsMulti<T, D>;`, issues: [{ title: '无法在编译器辨别类型', code: `<Select {...{ dataSource, // 数字数组 value, // string,实际是 number onChange // string => void,实际是 number => void }} />`, type: EIssueType.TYPE_UNPROTECTED, error: '可能导致各种运行期问题', consequences: [EIssueConsequence.ABNORMAL] }, { title: '无法在编译器辨别单选或多选', code: `<Select {...{ mode: 'multiple', // tag dataSource, value, // string,实际是 string[] onChange // string => void,实际是 string[] => void }} />`, type: EIssueType.TYPE_UNPROTECTED, error: '可能导致各种运行期问题', consequences: [EIssueConsequence.ABNORMAL] }] };