我可以声明一个属性设置一个后备字段吗?

时间:2018-10-12 12:54:32

标签: typescript

如果我有以下代码,是否有办法告诉编译器this._size设置了this.__size(并将其类型从Size | undefined限制为{{1} })?目前,我在Size上遇到错误,说return this.__sizeSize之间存在类型不匹配。我可以将类型声明为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(...); } } 的存在是为了让子类拥有自己的实现,而无需修改属性逻辑。

0 个答案:

没有答案