打字稿类:明确的公开'修饰符最佳实践?

时间:2016-04-29 17:03:26

标签: typescript

在TS中,除非指定了其他任何内容,否则类成员的默认访问级别为public。即便如此,最好还是使用public修饰符?如果没有别的东西可以使代码更明显?

4 个答案:

答案 0 :(得分:18)

我个人喜欢每次都列出来。当然,这只是个人偏好的问题。如果您确实想要,并且使用tslint,则可以选择每次强制显式可见性。

member-access: true

答案 1 :(得分:11)

这是一个非常主观的话题,IMO没有完美答案。但是,我要说的是,解决问题的一个重要因素是你是否并行使用其他语言,以及TypeScript和其他语言之间的默认访问者修饰符是否存在差异。

以C#为例。在C#中,没有显式访问修饰符的每个属性和字段都是私有的。在TypeScript中,它显然是公开的。

如果你碰巧在同一个项目中使用C#和TypeScript,或者只是并行使用,我建议使用显式访问修饰符,只是为了清晰起见。

答案 2 :(得分:1)

正如其他答案所述,这是一个优先事项(我更喜欢精简版)。

如果您使用parameter properties,则显式public访问修饰符是强制性的,以便根据给定的参数创建和初始化实例成员。

class Octopus {
    readonly numberOfLegs: number = 8;
    constructor(public name: string, ink: boolean) { }
}

const o = new Octopus("Lui", true)
o.name // works
o.ink // error

答案 3 :(得分:0)

明确声明公共访问修饰符的好处是,它表明您对此有想法,并且您决定将其公开。 不利之处在于,额外的语法会增加噪音,从而使重要的代码难以通过(对于开发人员而言,每次必须添加该额外的语法都需要付出更多的努力)。

我见过很多情况,应该添加private修饰符,但是没有考虑访问修饰符。

说实话,如果默认情况下所有内容都是私有的,那就更好了,您必须添加public才能将其向外界开放。

我个人倾向于显式添加它们。

但是,我认为对于必须公开的事物,可以使用默认值(因为我们不必考虑它是否应该是私有的,因为它必须是公开的)。

示例(对于Angular)如下所示: @Input()@Output()@HostListener和已实现的公共方法。