Typescript中的类的公共访问修饰符的用途是什么?
之间有什么区别
export class Thing {
public doStuff(){}
}
和
export class Thing {
doStuff(){}
}
似乎标准的tsc JS输出完全相同......
答案 0 :(得分:0)
这只是将方法设置为public
的明确方法。默认情况下,TypeScript中的所有类方法/属性都是public类型,但为了清楚起见,您也可以在代码中注意这一点。
您可以在Handbook中详细了解相关内容,以下是摘录:
默认公开
在我们的示例中,我们已经能够自由访问我们在整个程序中声明的成员。如果你熟悉其他语言的课程,你可能已经注意到在上面的例子中我们不必使用public这个词来实现这个目的;例如,C#要求将每个成员明确标记为public以使其可见。在TypeScript中,默认情况下每个成员都是公共的。
您仍然可以明确标记成员公开。
答案 1 :(得分:0)
您的示例代码在TypeScript中意味着完全相同。如果您未在成员定义中添加修饰符public
,private
或protected
,则TypeScript将选择默认值public
。
这对Javascript没有意义,因为TypeScript转换器将生成完全相同的代码。但是这些修饰符将帮助您封装您的类成员并使其成为:
public
private
protected
再次生成的Javascript将不包含修饰符。这意味着,如果有人获得您的Javascript代码,即使您将其定义为private
,也会访问这些成员。修饰符仅在TypeScript中有用,并帮助开发人员不访问某些类成员。
答案 2 :(得分:0)
使用public
的两个原因,一个是主观/风格,另一个是目的:
这是代码内文档。忘记使用访问修饰符 即可。 (这是主观/风格上的原因。)
如果要使用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"