0

Angular Material2 和 CDK 在设置器中广泛使用 coerceBooleanProperty 用于布尔属性输入,但并没有一致地使用 Type。在他们自己的代码中,在某些情况下,我们会看到 getter 返回值和 setter 参数以及内部属性 typed boolean。例如:

@Input()
get myProperty(): boolean { return this._myProperty; }
set myProperty(value: boolean) { this._myProperty = coerceBooleanProperty(value); }
private _myProperty: boolean = false;

在其他情况下,我们只看到输入的 setter 参数(这似乎是 Material2 和 CDK 中最常见的模式):

@Input()
get myProperty() { return this._myProperty; }
set myProperty(value: boolean) { this._myProperty = coerceBooleanProperty(value); }
private _myProperty = false;

有时我们会看到 getter 和 setter 类型为any

@Input()
get myProperty(): any { return this._myProperty; }
set myProperty(value: any) { this._myProperty = coerceBooleanProperty(value); }
private _myProperty = false;

有时两者都没有输入,但内部属性是故意输入的boolean

@Input()
get myProperty() { return this._myProperty; }
set myProperty(value) { this._myProperty = coerceBooleanProperty(value); }
private _myProperty: boolean = false;

在我看来,第一个示例 - 将 getter 返回值和 setter 参数都输入为布尔值 - 是“正确”的方法,因为这会强制应用程序或库打字稿代码正确使用该属性。但是他们自己的代码使用缺乏一致性让我想知道是否有一些我没有考虑过的东西。或者,也许这仅仅是对旧实现进行改进的新实现的问题。

这里首选的模式是什么,为什么?

4

0 回答 0