可以在 JavaScript 中显式输入“属性”或“字段”吗

MyD*_*ons 7 javascript class

我有 C# 背景,我们有fieldsproperties.

JavaScript 支持类,我正在学习它们,但立即遇到了障碍。

以下代码片段工作正常,但我的问题是关于 2 个“字段”massmoons. JavaScript 正在创建这些对象,但我想知道是否可以显式创建它们。

class Planet {

      constructor (mass, moons) {
        this.mass  = mass;
        this.moons = moons || 0;
      }

      reportMoons () {
        txt.innerHTML = "I have " + this.moons + " moons.";
      }
}
Run Code Online (Sandbox Code Playgroud)

代码来源

所以不知何故(我相信由于变量没有定义,它应该自动成为一个全局变量,但由于它是类的一部分,我怀疑它也没有这样做),JavaScript知道massmoons。我宁愿看到这些变量被显式声明(就像在 C# 中一样),但我无法在类中添加var,const或。let以下内容无效

class Planet {  

   constructor (mass, moons) {
   }

   let _mass;
   const _val = 5;
}
Run Code Online (Sandbox Code Playgroud)

原因是我认为查找定义的属性比查看构造函数更容易(可能是因为我习惯了 C#)。

我知道 JavaScript 不是 C#,但是...是否可以使其更详细一点?

附:我已经在使用 TypeScript 了。我并不寻求什么语言更合适的建议,我热衷于学习 JavaScript,这是一种奇怪而美妙的方式:)

Ana*_*nta 2

不知道纯JS能不能实现。但你可以看看TypeScript。它给JS添加了一些功能,并将其转换为纯js。你可以 :

  • 已输入变量
  • 指定返回类型
  • 有枚举和接口

以及更多。