Skip to content

时间日期相关组件接口问题 #814

Open
@Justineo

Description

@Justineo

目前 DatePickervalue 类型为 DateTimePickervalue 类型为 string(例如 '10:08'),后续可能还会支持 DateTimePickervalue 类型应该会是 Date。这样感觉其实有点奇怪。由于后续 JavaScript 应该会原生支持 Temporal,可以考虑将三者的接口分别对应到 Temporal.PlainDate/Temporal.PlainTime/Temporal.PlainDateTimefrom 方法参数上面(也需要考虑 DatePicker[type="year"]DatePicker[type="month"]),已保证未来可以方便地构造 Temporal 对象。

Ps. 发现 TimePicker 用的 modeDatePicker 用的 type,也需要统一一下。

interface DatePickerDayValue {
  year: number,
  month: number,
  day: number
}

interface DatePickerMonthValue {
  year: number,
  month: number
}

interface TimePickerValue {
  hour: number,
  minute: number,
  second: number
}

interface DateTimePickerValue extends DatePickerDateValue, TimePickerValue  {}
组件 type value 类型
DatePicker day DatePickerDayValue
DatePicker month DatePickerMonthValue
DatePicker year number
TimePicker / TimePickerValue
DateTimePicker / DateTimePickerValue

兼容性和迁移

可以考虑添加一个 temporal prop,来开启新的接口,未来 major 版本升级的时候切换到新的逻辑上,把当前的兼容处理去除。未开启的情况下,可以考虑 warning 提示升级。

另外,Temporal 接口的 month 不是从 0 开始的,而是更符合直觉的 112

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions