代码之家  ›  专栏  ›  技术社区  ›  G. Tranter

在使用angular cdk的converteboleanproperty()为布尔属性输入定义getter和setter时,使用类型的首选方法是什么?

  •  0
  • G. Tranter  · 技术社区  · 6 年前

    Angular Material2&CDK在布尔属性输入的setters中广泛使用了convertebooleanproperty,但不一致地使用类型。在它们自己的代码中,在某些情况下,我们看到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;
    

    有时两者都没有输入,但内部属性是故意输入的 布尔型 :

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

    在我看来,第一个示例(将getter返回值和setter参数同时输入为布尔值)是“正确的”方法,因为这将强制应用程序或库typescript代码正确使用该属性。但他们自己的代码使用缺乏一致性,这让我怀疑是否有什么我没有考虑过的。或者,这仅仅是一个较新的实现对较旧的实现进行改进的问题。

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

    0 回复  |  直到 6 年前
    推荐文章