Angular Material2和CDK在设置器中广泛使用coerceBooleanProperty作为布尔属性输入,但没有一致地使用Type。在他们自己的代码中,有时会看到getter返回值和setter参数,以及键入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参数都输入为boolean-是“正确的”方法,因为这会强制应用程序或库打字稿代码正确使用该属性。但是他们自己的代码使用缺乏一致性,这使我想知道是否有我没有考虑过的东西。也许这仅仅是新的实现对旧的实现进行改进的问题。
这里首选的模式是什么?为什么?