为什么我们不能在打字稿中的类中使用let关键字

use*_*451 2 javascript typescript

我是TypeScript的新手。我想知道为什么我们不能在let下面的类中使用关键字进行变量声明。提前致谢。

class Greeter {
    let greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");
console.log(greeter.greet())
Run Code Online (Sandbox Code Playgroud)

Exp*_*lls 5

我相信您的问题是,为什么我们不能使用let关键字...

在TypeScript中:

我想这只是一个语法选择,但是类属性不需要关键字。您可以选择添加public关键字,或者如果您希望class属性对于该类型是私有的,则可以使用private关键字:

class Greeter {
  greeting: string;
  // or
  public greeting: string;
  //alternatively
  private greeting: string;
Run Code Online (Sandbox Code Playgroud)

这只是为了定义类型而定义属性。稍后,当您这样做时:

const greeter = new Greeter;
Run Code Online (Sandbox Code Playgroud)

现在,您将可以使用greeter.greeting所有字符串方法和TypeScript,并将它们成功地转换。如果greeting未声明,则在尝试转运时会收到错误消息

Property 'greeting' does not exist on type 'Greeter'

在JavaScript中:

当前根本没有办法在JavaScript中声明类属性。故意不支持。