使用angular-cdk的coerceBooleanProperty()定义布尔型输入的getter和setter时,使用Type的首选方式是什么?

时间:2018-07-30 20:07:15

标签: typescript angular-material angular-material2 angular-material-5 angular-material-6

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-是“正确的”方法,因为这会强制应用程序或库打字稿代码正确使用该属性。但是他们自己的代码使用缺乏一致性,这使我想知道是否有我没有考虑过的东西。也许这仅仅是新的实现对旧的实现进行改进的问题。

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

0 个答案:

没有答案