开发过程中出了一个tslint的校验问题。如下:

操作的是antd的一个组件RangePicker的value值。
value值默认接收moment类型的数据,并且是数组。
this.state.selectedDate就是一个moment数组。
但是却报了这个No overload matches this call错误。
不能将类型"Moment[]"分配给类型"undefined[] | null[] | [Moment] | [undefined, Moment] | [Moment | undefined] | [null, Moment] | [Moment, null] | [Moment, Moment] | null"
这样的错误
这里就要在state初始化的时候将selectedDate定义成2个Moment元素组成的元组即可,运用简单的类型断言即可。
原代码
selectedDate: [moment(new Date().getTime() - 7 * (1000 * 60 * 60 * 24)), moment(new Date().getTime() - (1000 * 60 * 60 * 24))],
修改后代码
selectedDate: [moment(new Date().getTime() - 7 * (1000 * 60 * 60 * 24)), moment(new Date().getTime() - (1000 * 60 * 60 * 24))] as [moment.Moment, moment.Moment]
网友评论