空/未定义检查在接受通用道具的类中不起作用。
interface IFooProps {
minDate?: Date;
}
1-调用createNewDateWithMonth5函数时,这会在updateDate函数中给出“无法分配给类型为“日期”的未定义”错误
class Foo<P extends IFooProps> extends React.Component<P> {
updateDate() {
if (this.props.minDate) {
this.createNewDateWithMonth5(this.props.minDate)
}
}
createNewDateWithMonth5(date: Date): Date {
const newDate = new Date(date);
newDate.setMonth(5);
return newDate;
}
}
2-这没有错误,并且可以正常工作。
class Foo extends React.Component<IFooProps> {
updateDate() {
if (this.props.minDate) {
this.createNewDateWithMonth5(this.props.minDate)
}
}
createNewDateWithMonth5(date: Date): Date {
const newDate = new Date(date);
newDate.setMonth(5);
return newDate;
}
}
我期望1像2一样正常工作。 为什么null / undefined检查在带有可扩展道具的可扩展类中不起作用。
这里是沙盒link,用于重现错误。
答案 0 :(得分:0)
嗯,不确定,看起来确实有些奇怪,但是另一方面,我并不感到惊讶-永远都不知道超类中发生了什么。
我会缓存道具,然后对缓存的值执行相同的操作。这应该很简单。
updateDate() {
const { minDate } = this.props
if (minDate ) {
this.createNewDateWithMonth5(minDate)
}
}
这种“解构”语法在react中也非常流行,因为它无需编写每个引用的“ props”或“ state”,从而大大缩短了代码。