在TS中,除非指定了其他任何内容,否则类成员的默认访问级别为public
。即便如此,最好还是使用public
修饰符?如果没有别的东西可以使代码更明显?
答案 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
和已实现的公共方法。