perf: ts type perf
parent
f4140b9c63
commit
99ac4780d6
|
@ -13,12 +13,15 @@ export type MonthPickerProps = Omit<PickerDateProps<Date>, 'picker'> & ExtraDate
|
||||||
export type WeekPickerProps = Omit<PickerDateProps<Date>, 'picker'> & ExtraDatePickerProps<Date>;
|
export type WeekPickerProps = Omit<PickerDateProps<Date>, 'picker'> & ExtraDatePickerProps<Date>;
|
||||||
export type RangePickerProps = BaseRangePickerProps<Date> & ExtraRangePickerProps<Date>;
|
export type RangePickerProps = BaseRangePickerProps<Date> & ExtraRangePickerProps<Date>;
|
||||||
|
|
||||||
const DatePicker = generatePicker<Date>(dataFnsGenerateConfig);
|
const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =
|
||||||
|
generatePicker<Date>(dataFnsGenerateConfig);
|
||||||
|
|
||||||
const RangePicker = DatePicker.RangePicker;
|
DatePicker.WeekPicker = WeekPicker;
|
||||||
const MonthPicker = DatePicker.MonthPicker;
|
DatePicker.MonthPicker = MonthPicker;
|
||||||
const WeekPicker = DatePicker.WeekPicker;
|
DatePicker.YearPicker = YearPicker;
|
||||||
const QuarterPicker = DatePicker.QuarterPicker;
|
DatePicker.RangePicker = RangePicker;
|
||||||
|
DatePicker.TimePicker = TimePicker;
|
||||||
|
DatePicker.QuarterPicker = QuarterPicker;
|
||||||
|
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
DatePicker.install = function (app: App) {
|
DatePicker.install = function (app: App) {
|
||||||
|
|
|
@ -14,12 +14,15 @@ export type MonthPickerProps = Omit<PickerDateProps<Dayjs>, 'picker'> & ExtraDat
|
||||||
export type WeekPickerProps = Omit<PickerDateProps<Dayjs>, 'picker'> & ExtraDatePickerProps<Dayjs>;
|
export type WeekPickerProps = Omit<PickerDateProps<Dayjs>, 'picker'> & ExtraDatePickerProps<Dayjs>;
|
||||||
export type RangePickerProps = BaseRangePickerProps<Dayjs> & ExtraRangePickerProps<Dayjs>;
|
export type RangePickerProps = BaseRangePickerProps<Dayjs> & ExtraRangePickerProps<Dayjs>;
|
||||||
|
|
||||||
const DatePicker = generatePicker<Dayjs>(dayjsGenerateConfig);
|
const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =
|
||||||
|
generatePicker<Dayjs>(dayjsGenerateConfig);
|
||||||
|
|
||||||
const RangePicker = DatePicker.RangePicker;
|
DatePicker.WeekPicker = WeekPicker;
|
||||||
const MonthPicker = DatePicker.MonthPicker;
|
DatePicker.MonthPicker = MonthPicker;
|
||||||
const WeekPicker = DatePicker.WeekPicker;
|
DatePicker.YearPicker = YearPicker;
|
||||||
const QuarterPicker = DatePicker.QuarterPicker;
|
DatePicker.RangePicker = RangePicker;
|
||||||
|
DatePicker.TimePicker = TimePicker;
|
||||||
|
DatePicker.QuarterPicker = QuarterPicker;
|
||||||
|
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
DatePicker.install = function (app: App) {
|
DatePicker.install = function (app: App) {
|
||||||
|
|
|
@ -17,7 +17,7 @@ import type { ExtraDatePickerProps } from './props';
|
||||||
import { commonProps, datePickerProps } from './props';
|
import { commonProps, datePickerProps } from './props';
|
||||||
import devWarning from '../../vc-util/devWarning';
|
import devWarning from '../../vc-util/devWarning';
|
||||||
|
|
||||||
export default function generatePicker<DateType>(
|
export default function generateSinglePicker<DateType>(
|
||||||
generateConfig: GenerateConfig<DateType>,
|
generateConfig: GenerateConfig<DateType>,
|
||||||
extraProps: Record<string, any> = {},
|
extraProps: Record<string, any> = {},
|
||||||
) {
|
) {
|
||||||
|
@ -238,5 +238,19 @@ export default function generatePicker<DateType>(
|
||||||
'AQuarterPicker',
|
'AQuarterPicker',
|
||||||
);
|
);
|
||||||
|
|
||||||
return { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker };
|
return {
|
||||||
|
DatePicker,
|
||||||
|
WeekPicker,
|
||||||
|
MonthPicker,
|
||||||
|
YearPicker,
|
||||||
|
TimePicker,
|
||||||
|
QuarterPicker,
|
||||||
|
} as unknown as {
|
||||||
|
DatePicker: DefineComponent<DatePickerProps>;
|
||||||
|
WeekPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
MonthPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
YearPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
TimePicker: DefineComponent<Omit<PickerTimeProps<DateType>, 'picker'>>;
|
||||||
|
QuarterPicker: DefineComponent<Omit<PickerTimeProps<DateType>, 'picker'>>;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@ import type { TimePickerLocale } from '../../time-picker';
|
||||||
import generateSinglePicker from './generateSinglePicker';
|
import generateSinglePicker from './generateSinglePicker';
|
||||||
import generateRangePicker from './generateRangePicker';
|
import generateRangePicker from './generateRangePicker';
|
||||||
import type { SizeType } from '../../config-provider';
|
import type { SizeType } from '../../config-provider';
|
||||||
|
import type { ExtraDatePickerProps, ExtraRangePickerProps } from './props';
|
||||||
|
import type { DefineComponent } from 'vue';
|
||||||
|
|
||||||
export const Components = { button: PickerButton, rangeItem: PickerTag };
|
export const Components = { button: PickerButton, rangeItem: PickerTag };
|
||||||
|
|
||||||
|
@ -129,32 +131,33 @@ function generatePicker<DateType>(
|
||||||
generateConfig: GenerateConfig<DateType>,
|
generateConfig: GenerateConfig<DateType>,
|
||||||
extraProps: Record<string, any> = {},
|
extraProps: Record<string, any> = {},
|
||||||
) {
|
) {
|
||||||
|
type DatePickerProps = PickerProps<DateType> & ExtraDatePickerProps<DateType>;
|
||||||
// =========================== Picker ===========================
|
// =========================== Picker ===========================
|
||||||
const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker } =
|
const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker } =
|
||||||
generateSinglePicker(generateConfig, extraProps);
|
generateSinglePicker<DateType>(generateConfig, extraProps);
|
||||||
|
|
||||||
// ======================== Range Picker ========================
|
// ======================== Range Picker ========================
|
||||||
const RangePicker = generateRangePicker(generateConfig, extraProps);
|
const RangePicker = generateRangePicker<DateType>(generateConfig, extraProps);
|
||||||
|
|
||||||
// =========================== Export ===========================
|
// 类型过于复杂,使用 as 避免 TS7056 错误
|
||||||
type MergedDatePickerType = typeof DatePicker & {
|
// error TS7056: The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.
|
||||||
WeekPicker: typeof WeekPicker;
|
return {
|
||||||
MonthPicker: typeof MonthPicker;
|
DatePicker,
|
||||||
YearPicker: typeof YearPicker;
|
WeekPicker,
|
||||||
RangePicker: typeof RangePicker;
|
MonthPicker,
|
||||||
TimePicker: typeof TimePicker;
|
YearPicker,
|
||||||
QuarterPicker: typeof QuarterPicker;
|
TimePicker,
|
||||||
|
QuarterPicker,
|
||||||
|
RangePicker,
|
||||||
|
} as unknown as {
|
||||||
|
DatePicker: DefineComponent<DatePickerProps>;
|
||||||
|
WeekPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
MonthPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
YearPicker: DefineComponent<Omit<PickerDateProps<DateType>, 'picker'>>;
|
||||||
|
TimePicker: DefineComponent<Omit<PickerTimeProps<DateType>, 'picker'>>;
|
||||||
|
QuarterPicker: DefineComponent<Omit<PickerTimeProps<DateType>, 'picker'>>;
|
||||||
|
RangePicker: DefineComponent<RangePickerProps<DateType> & ExtraRangePickerProps<DateType>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const MergedDatePicker = DatePicker as MergedDatePickerType;
|
|
||||||
MergedDatePicker.WeekPicker = WeekPicker;
|
|
||||||
MergedDatePicker.MonthPicker = MonthPicker;
|
|
||||||
MergedDatePicker.YearPicker = YearPicker;
|
|
||||||
MergedDatePicker.RangePicker = RangePicker;
|
|
||||||
MergedDatePicker.TimePicker = TimePicker;
|
|
||||||
MergedDatePicker.QuarterPicker = QuarterPicker;
|
|
||||||
|
|
||||||
return MergedDatePicker;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default generatePicker;
|
export default generatePicker;
|
||||||
|
|
|
@ -16,12 +16,15 @@ export type WeekPickerProps = Omit<PickerDateProps<Moment>, 'picker'> &
|
||||||
ExtraDatePickerProps<Moment>;
|
ExtraDatePickerProps<Moment>;
|
||||||
export type RangePickerProps = BaseRangePickerProps<Moment> & ExtraRangePickerProps<Moment>;
|
export type RangePickerProps = BaseRangePickerProps<Moment> & ExtraRangePickerProps<Moment>;
|
||||||
|
|
||||||
const DatePicker = generatePicker<Moment>(momentGenerateConfig);
|
const { DatePicker, WeekPicker, MonthPicker, YearPicker, TimePicker, QuarterPicker, RangePicker } =
|
||||||
|
generatePicker<Moment>(momentGenerateConfig);
|
||||||
|
|
||||||
const RangePicker = DatePicker.RangePicker;
|
DatePicker.WeekPicker = WeekPicker;
|
||||||
const MonthPicker = DatePicker.MonthPicker;
|
DatePicker.MonthPicker = MonthPicker;
|
||||||
const WeekPicker = DatePicker.WeekPicker;
|
DatePicker.YearPicker = YearPicker;
|
||||||
const QuarterPicker = DatePicker.QuarterPicker;
|
DatePicker.RangePicker = RangePicker;
|
||||||
|
DatePicker.TimePicker = TimePicker;
|
||||||
|
DatePicker.QuarterPicker = QuarterPicker;
|
||||||
|
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
DatePicker.install = function (app: App) {
|
DatePicker.install = function (app: App) {
|
||||||
|
|
Loading…
Reference in New Issue