Typescript中类的公共访问修饰符的用途是什么?

x6h2sr28  于 2023-11-20  发布在  TypeScript
关注(0)|答案(3)|浏览(161)

Typescript中类的公共访问修饰符的用途是什么?
有什么区别

export class Thing {

  public doStuff(){}

}

字符串

export class Thing {

  doStuff(){}

}


看起来标准的tsc JS输出是完全一样的...

yi0zb3m4

yi0zb3m41#

使用public的两个原因,一个是主观的/风格,另一个是客观的:
1.这是一个代码内的文档。省略访问修饰符 * 可能 * 被认为是你忘记了它。(这是主观/风格的原因。)
1.如果你想使用TypeScript添加到类构造函数的速记初始化功能,你需要public来告诉TypeScript这样做。
下面是一个例子#2:

class Example {
    constructor(public name: string) {
//              ^^^^^^---------------- This is what triggers the feature
    }
}
const e = new Example("Joe");
console.log(e.name); // "Joe"

字符串

  • (在操场上)*
vd8tlhqk

vd8tlhqk2#

你的示例代码在TypeScript中的含义完全相同。当你没有在成员定义上放置修饰符publicprivateprotected时,TypeScript将选择默认的修饰符,即public
这对JavaScript来说没有意义,因为TypeScript transplier将生成完全相同的代码。但是这些修饰符将帮助你封装你的类成员并使它们:

  • 在类外部可访问:public
  • 只能在类中访问:private
  • 只能在类和派生类中访问:protected

同样,生成的JavaScript将不包含修饰符。这意味着如果有人获取了您的JavaScript代码,即使您将其定义为private,它也可以访问成员。修饰符仅在TypeScript中有用,并帮助开发人员不访问某些类成员。

tyky79it

tyky79it3#

这只是一种将方法设置为public的显式方式。默认情况下,TypeScript中的所有类方法/属性都是public类型,但为了清晰起见,您也可以在代码中注明这一点。
你可以在Handbook中阅读更多关于它的信息,这里是一个摘录:
默认为公共
在我们的例子中,我们已经能够自由地访问我们在整个程序中声明的成员。如果你熟悉其他语言中的类,你可能已经注意到在上面的例子中我们不必使用public这个词来实现这一点;例如,C#要求每个成员显式地标记为public才能可见。在TypeScript中,每个成员默认为public。
您仍然可以显式地将成员标记为public。

相关问题