目前 DatePicker 的 value 类型为 Date,TimePicker 的 value 类型为 string(例如 '10:08'),后续可能还会支持 DateTimePicker,value 类型应该会是 Date。这样感觉其实有点奇怪。由于后续 JavaScript 应该会原生支持 Temporal,可以考虑将三者的接口分别对应到 Temporal.PlainDate/Temporal.PlainTime/Temporal.PlainDateTime 的 from 方法参数上面(也需要考虑 DatePicker[type="year"] 和 DatePicker[type="month"]),已保证未来可以方便地构造 Temporal 对象。
Ps. 发现 TimePicker 用的 mode,DatePicker 用的 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 开始的,而是更符合直觉的 1–12。
目前
DatePicker的value类型为Date,TimePicker的value类型为string(例如'10:08'),后续可能还会支持DateTimePicker,value类型应该会是Date。这样感觉其实有点奇怪。由于后续 JavaScript 应该会原生支持 Temporal,可以考虑将三者的接口分别对应到Temporal.PlainDate/Temporal.PlainTime/Temporal.PlainDateTime的from方法参数上面(也需要考虑DatePicker[type="year"]和DatePicker[type="month"]),已保证未来可以方便地构造Temporal对象。Ps. 发现
TimePicker用的mode,DatePicker用的type,也需要统一一下。typevalue类型DatePickerdayDatePickerDayValueDatePickermonthDatePickerMonthValueDatePickeryearnumberTimePickerTimePickerValueDateTimePickerDateTimePickerValue兼容性和迁移
可以考虑添加一个
temporalprop,来开启新的接口,未来 major 版本升级的时候切换到新的逻辑上,把当前的兼容处理去除。未开启的情况下,可以考虑 warning 提示升级。另外,
Temporal接口的month不是从0开始的,而是更符合直觉的1–12。