例如,如果我有此类:
type Url: string;
class A {
#url: Url
}
#
符号代表什么?谢谢!
答案 0 :(得分:3)
这是ECMAScript private field,是TypeScript 3.8的新功能。可以从类内部的方法访问该字段,但不能从类外部的方法访问。
更多信息:
文档中的示例:
class Animal { #name: string; constructor(theName: string) { this.#name = theName; } } new Animal("Cat").#name; // Property '#name' is not accessible outside class 'Animal' because it has a private identifier.
答案 1 :(得分:1)
为了补充jtbandes answer,TypeScript private
类成员关键字只是语法糖,作用于 type级别(TypeScript编译器)。在运行时中,private
类成员实际上是 public 。我们可以在类中使用Object.assign(this, {
field: value })
来查看它,该类可以与TypeScript private
字段一起使用,而不能与#
(EcmaScript private)字段一起使用。
TypeScript团队需要同时保留两种语法和两种行为,以免破坏现有的TypeScript代码库。作为开发人员,我们可以在两种语法之间进行选择: