如果我有以下代码,是否有办法告诉编译器this._size
设置了this.__size
(并将其类型从Size | undefined
限制为{{1} })?目前,我在Size
上遇到错误,说return this.__size
和Size
之间存在类型不匹配。我可以将类型声明为Size | undefined
,但如果可能的话,我想避免这种情况(公司样式准则)。
return this.__size!;
请注意,class Shape {
private __size?: Size;
protected get _size(): Size {
if (!this.__size)
{
this._size = this.onCalculateSize(); // returns `Size`
}
return this.__size;
}
protected set _size(value: Size)
{
this.__size = value;
this.onSizeChanged();
}
protected onSizeChanged(): void { }
protected onCalculateSize(): Size { return new Size(...); }
}
的存在是为了让子类拥有自己的实现,而无需修改属性逻辑。