Typescript类:显式';公共';最佳实践是什么?

Typescript类:显式';公共';最佳实践是什么?,typescript,Typescript,在TS中,类成员的默认访问级别为public,除非另有规定。即便如此,使用public修饰符是否被视为最佳实践?如果没有其他方法使代码更明显 我个人喜欢每次都列出它。当然,这只是个人喜好的问题。如果您确实想这样做,并且您使用了tslint,那么每次都有一个强制显式可见性的选项 member-access: true 在我看来,这是一个非常主观的话题,不存在完美的答案。然而,我想说,确定答案的一个重要因素是您是否同时使用其他语言,以及TypeScript和其他语言之间的默认访问器修饰符是否有差异

在TS中,类成员的默认访问级别为
public
,除非另有规定。即便如此,使用
public
修饰符是否被视为最佳实践?如果没有其他方法使代码更明显

我个人喜欢每次都列出它。当然,这只是个人喜好的问题。如果您确实想这样做,并且您使用了tslint,那么每次都有一个强制显式可见性的选项

member-access: true

在我看来,这是一个非常主观的话题,不存在完美的答案。然而,我想说,确定答案的一个重要因素是您是否同时使用其他语言,以及TypeScript和其他语言之间的默认访问器修饰符是否有差异

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


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

显式声明公共访问修饰符的好处是,它表明您考虑过它,并且您决定它应该是公共的。 缺点是额外的语法会增加噪音,这使得重要的代码更难通过(开发人员每次都要添加额外的语法,这会让他们付出更多的工作)

我曾经看到过一些情况,其中应该添加私有修饰符,但没有考虑访问修饰符

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

就我个人而言,我倾向于明确地添加它们

然而,我认为对于必须公开的东西,可以使用默认值(因为我们不必考虑它是否应该是私有的,因为它必须是公开的)

示例(对于角度)如下所示:
@Input()
@Output()
@HostListener
,以及实现的公共方法。

正如其他答案所述,这是一个偏好问题(我更喜欢精简版本)

如果使用,则必须使用显式的
public
access修饰符才能从给定参数创建和初始化实例成员

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

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

在我看来,最好不要写它。它不需要维护,也不需要查看。此外,不添加它会使受保护的和私有的成员从公共成员中脱颖而出,因此很容易快速查看内容。