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

gee*_*jay 8 typescript

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

有什么区别

export class Thing {

  public doStuff(){}

}
Run Code Online (Sandbox Code Playgroud)

export class Thing {

  doStuff(){}

}
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 5

使用 的两个原因public,一个是主观/风格,另一个是客观:

  1. 它是代码内文档。省略访问修饰符可能会被视为您忘记了它。(这是主观/风格原因。)

  2. 如果您想使用 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"
Run Code Online (Sandbox Code Playgroud)

在操场上。)


Cod*_*und 4

您的示例代码在 TypeScript 中的含义完全相同。当您未在成员定义上放置修饰符publicprivate、 或 时protected,TypeScript 将选择默认修饰符 、 或public

这对于 JavaScript 来说没有意义,因为 TypeScript 转译器将生成完全相同的代码。但是这些修饰符将帮助您封装类成员并使它们:

  • 可以在课堂外访问:public
  • 只能在课堂上访问:private
  • 只能在类和派生类中访问:protected

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

  • 显式指定 **public** 修饰符是否是一种好的做法? (6认同)